2010-02-19 52 views
1

我有一個使用OpenCV進行圖像處理的Qt應用程序。Qt和OpenCV 2.0集成問題

一切工作正常與OpenCV 1.0,但當我升級到 OpenCV 2.0它開始崩潰。 我注意到,只有在Qt插槽中OpenCV函數被稱爲 時,它纔會崩潰。

例如,下一個槽:被點擊時testButton

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); 
} 

崩潰。但是,如果我在任何其他地方調用相同的cvThreshold函數,例如在main()函數 內部或在Widget構造函數內部,它可以正常工作。另外,如果我將 相同的代碼放在一個單獨的函數中,並且 在同一個插槽中使用QtConcurrent :: run()調用該函數,那麼 也可以正常工作。

爲什麼會這樣?對Qt插槽內的操作 有任何限制嗎? OpenCV 2.0函數 中的哪些更改可能會導致衝突?

在此先感謝

回答

2

沒關係,我用的OpenCV的預編譯庫,這與不同版本的MinGW的創建 。

我用cmake + mingw編譯了庫,並使用 生成的庫解決了這個問題。

+1

如果問題能夠解決您的問題,請不要忘記接受您的答案。這樣,問題就不會被標記爲「未答覆」。此外,您將獲得一個徽章。 :) – Macke 2011-02-14 15:57:38

+0

@Andres:你是如何設法用cmake + mingw編譯opencv + Qt的?如果我嘗試這樣做,會出現錯誤,名爲'Windows-gcc.cmake'的文件丟失。 – vsz 2012-04-07 18:21:01