1

我有一个使用 OpenCV 进行图像处理的 Qt 应用程序。

OpenCV 1.0 一切正常,但当我升级到 OpenCV 2.0 时,它开始崩溃。我注意到它只会在 Qt 插槽内调用 OpenCV 函数时崩溃。

例如,以下插槽:

void TestClass::on_testButton_clicked() {
   IplImage* src = cvLoadImage("test.jpg");
   IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
   cvThreshold(src, dst, 100, 255, CV_THRESH_BINARY);
}

单击 testButton 时崩溃。

但是,如果我在任何其他地方调用相同的 cvThreshold 函数,例如在 main() 函数内部或 Widget 构造函数内部,它就可以正常工作。另外,如果我将相同的代码放在一个单独的函数中,并在同一个插槽中使用 QtConcurrent::run() 调用该函数,它也可以正常工作。

为什么会有这种行为?Qt 插槽中可以进行的操作是否有任何限制?OpenCV 2.0 函数中的哪些更改可能导致冲突?

提前致谢

4

1 回答 1

2

没关系,我使用的是 OpenCV 的预编译库,这些库是用不同版本的 mingw 创建的。

我用 cmake+mingw 编译了库,并使用生成的库解决了这个问题。

于 2010-02-19T11:41:00.483 回答