小编lig*_*ist的帖子

为使用OpenCV的C++代码编写Python绑定

我正在尝试为一些使用OpenCV的C++代码编写一个python包装器,但是我很难将结果(一个OpenCV C++ Mat对象)返回给python解释器.

我查看了OpenCV的源代码,发现文件cv2.cpp具有转换函数,可以在PyObject*和OpenCV的Mat之间来回执行转换.我使用了那些转换函数,但在我尝试使用它们时遇到了分段错误.

我基本上需要一些关于如何使用OpenCV来连接python和C++代码的建议/示例代码/在线参考,特别是能够将OpenCV的C++ Mat返回给python解释器,或者可能建议如何/从何处开始调查原因分段错误.

目前我正在使用Boost Python来包装代码.

在此先感谢任何回复.

相关代码:

// This is the function that is giving the segmentation fault.
PyObject* ABC::doSomething(PyObject* image)
{
    Mat m;
    pyopencv_to(image, m);  // This line gives segmentation fault.

    // Some code to create cppObj from CPP library that uses OpenCV
    cv::Mat processedImage = cppObj->align(m);

    return pyopencv_from(processedImage);
}
Run Code Online (Sandbox Code Playgroud)

从OpenCV的源代码转换函数如下.转换代码在带有"if(!PyArray_Check(o))..."的注释行中给出了分段错误.

static int pyopencv_to(const PyObject* o, Mat& m, const char* name = "<unknown>", bool allowND=true)
{
    if(!o || o == Py_None)
    {
        if( !m.data )
            m.allocator …
Run Code Online (Sandbox Code Playgroud)

c++ python boost opencv boost-python

25
推荐指数
2
解决办法
1万
查看次数

Qt中是否有可折叠面板的标准组件?

我正在尝试创建一个类似于Qt Designer中的可折叠侧面板(参见附件截图).它们似乎是放置在某种可折叠小部件中的QListView.

在此输入图像描述

我搜索了"Qt可折叠面板",似乎没有标准组件,或者至少没有这个名称.那么,有没有人知道任何标准Qt组件是否具有相同的行为?如果没有,任何人都可以建议我如何建造它?

谢谢.

user-interface qt

16
推荐指数
1
解决办法
2万
查看次数

Python 委托模式 - 如何避免循环引用?

我想问一下在 Python 中使用委托模式是否会导致循环引用,如果是,那么实现它以确保对象及其委托被垃圾收集的最佳方法是什么?

在 Objective C 中,通过使用对委托的弱引用避免了上述问题。在 C++ 中,我们不会在委托上调用 delete。我在这里找到了 Python 弱参考模块的链接:http : //docs.python.org/library/weakref.html。似乎一种合理的方法可能是创建一个弱引用以使用此模块引用实例变量,但我不确定。

由于我在谷歌上搜索了这个问题并且无法找到答案,我想知道这是否是 Python 中的一个问题,或者是否有一个我不知道的通用解决方案(不需要weakref 模块)的?此外,我在提问之前确实搜索了 stackoverflow,但我发现的问题要么涉及循环导入,要么涉及一般的委托模式,而不是特定于 Python 和循环引用的问题。

预先感谢您的任何答复。

下面列出了一些玩具示例的代码,以帮助说明我的问题。我已经以这种方式实现了代码并且它可以工作,但是我不确定最后是否对内存进行了垃圾回收。

class A(object):
    def __init__(self):
        self.delegate = None

        # Some other instance variables that keep track of state for performing some tasks.

    def doSomething(self):
        if self.delegate is not None:
            self.delegate.doSomething()
        else:
            print('Cannot perform task because delegate is not set.')

    # Other methods not shown.

class B(object):
    def __init__(self):
        self.a = A() # Need to keep object …
Run Code Online (Sandbox Code Playgroud)

python delegates circular-reference

5
推荐指数
1
解决办法
1752
查看次数

如何检测鼠标单击使用PySide创建的GUI中显示的图像

首先,我是Python,Qt和PySide的新手,请原谅我,如果这个问题看起来太简单了.

我要做的是在使用PySide API构建的GUI中的网格中显示一堆照片.此外,当用户点击照片时,我希望能够显示与该照片相对应的信息.此外,我希望用于显示照片的容器/小部件允许更改照片,例如,我应该能够替换网格中的任何照片,而不会再次从头开始创建整个网格照片.

最初我尝试使用QLabel来显示QPixmap,但我意识到(无论是否错误)我无法检测标签上的鼠标点击.经过一些搜索,我得到的印象是我应该继承QLabel(或其他一些相关类)并以某种方式覆盖QWidget(QLabel的父类)mousePressEvent()以启用鼠标点击检测.问题是我不知道该怎么做或者是否有任何替代小部件我可以用来包含我的照片而不是QLabel而不必经过子类定制.

任何人都可以建议一个比QLabel更合适的容器来显示照片,同时允许我检测照片上的鼠标点击或提供一些代码片段用于子类化QLabel以使其能够检测鼠标点击吗?

提前感谢您的回复.

python user-interface qt pyside

4
推荐指数
1
解决办法
3714
查看次数

使用Matlab间谍函数可视化稀疏度模式

Matlab有一个函数间谍,用于可视化图邻接矩阵的稀疏模式.

不幸的是,它没有通过考虑矩阵中值的大小来显示点.它使用具有相同强度的单一颜色来显示所有条目.

我希望显示相同的间谍情节,但是在热图中使用"颜色编码"这些点来表示条目的大小.我怎样才能做到这一点?

matlab plot graph

4
推荐指数
1
解决办法
5120
查看次数

VisualC 2010中的openCV 2.2 createButton LNK 2019错误

我一直在尝试使用openCV 2.2的新Qt函数(参见http://opencv.willowgarage.com/documentation/cpp/qt_new_functions.html#index-1384)进行项目,但我一直收到错误:

1> main.cpp 1> main.obj:错误LNK2019:未解析的外部符号"void __cdecl cv :: displayStatusBar(class std :: basic_string,class std :: allocator> const&,class std :: basic_string,class std :: allocator> const&,int)"(?displayStatusBar @ cv @@ YAXABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ 0H @ Z)在函数中引用_main 1> C:\ Documents and Settings\Orange\my documents\visual studio 2010\Projects\FYP\FYP.exe:致命错误LNK1120:1未解析的外部

我正在使用Visual Studio 2010,windows xp,qt 4.7.1和openCV 2.2.
我已经在属性>链接器>输入下的项目设置中为openCV和qt添加了核心lib文件.我尝试编译并运行openCV代码时没有遇到任何问题,除非我尝试使用新的Qt函数,如displayStatusBar(...)和createButton(...).我一直在寻找一个解决方案,我现在仍然找不到一个,因为openCV2.2最近刚刚发布.有没有人尝试过并遇到过这个问题并有解决方案?

顺便说一下,我想使用openCV提供的函数来创建简单的窗口和按钮而不是qt是因为我希望避免在openCV中的Mat数据类型和Qt中的QImage之间进行转换.

在此先感谢任何回复.

附加代码:

#include <cv.h>
#include <highgui.h>

using namespace cv;

int main()
{
    namedWindow("Test", …
Run Code Online (Sandbox Code Playgroud)

opencv visual-studio-2010

3
推荐指数
1
解决办法
4090
查看次数