Ahm*_*ato 4 qt opencv visual-studio-2010 qt-creator
我尝试了两种方法使用opencv和qt creator第一次使用Mingw,其中dll和.dll.a文件已经下载了opencv库,我只是添加.pro文件中的.dll.a文件的引用,如下所示
INCLUDEPATH += D:\\OpenCV\\opencv\\build\\include
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_calib3d242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_contrib242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_core242.dll.a
LIBS += D:\\OpenCV\\opencv\\build\\x64\\mingw\\lib\\libopencv_features2d242.dll.a
Run Code Online (Sandbox Code Playgroud)
我有一个简单的代码来测试opencv:
#include <QtCore/QCoreApplication>
#include <opencv/cv.h>
using namespace cv;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Mat image;
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
但我有一个构建问题如下
C:\ Users\Kato\Documents\QT projects\QtOpenCVYaRab\debug\main.o:-1:在函数
~Mat': d:\OpenCV\opencv\build\include\opencv2\core\mat.hpp:278: error: undefined reference tocv :: fastFree(void*)'d:\ OpenCV\opencv\build\include\opencv2\core\mat .hpp:367:错误:未定义引用`cv :: Mat :: deallocate()': - 1:错误:collect2:ld返回1退出状态
这是一些编译输出:
Running build steps for project QtOpenCVYaRab...
Configuration unchanged, skipping qmake step.
Starting: "C:\QtSDK\mingw\bin\mingw32-make.exe"
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/Kato/Documents/QT projects/QtOpenCVYaRab'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL
d:/OpenCV/opencv/build/include/opencv2/core/mat.hpp:278: undefined reference to `cv::fastFree(void*)'
debug/main.o:d:/OpenCV/opencv/build/include/opencv2/core/mat.hpp:367: undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\QtOpenCVYaRab.exe] Error 1
mingw32-make: *** [debug] Error 2
The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project QtOpenCVYaRab (target: Desktop)
When executing build step 'Make'
Run Code Online (Sandbox Code Playgroud)
第二种方法是使用cmake来编译opencv库,使用visual studio 2010构建它并添加对bin文件夹中文件的引用,但我得到了几乎相同的构建问题.
#include "iostream"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
IplImage *image = cvLoadImage("C:\\lena.jpg");
Mat im(image);
imshow("TEST",im);
waitKey();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是你的main.cpp ...上面的程序显示了lena的图片...使用双反斜杠来指示windows平台上的目录更改...一些imread如何为我工作所以我已经将图像加载为IplImage把它铸成Mat ...你也可以做以下事情..
IplImage *image = cvLoadImage("C:\\lena.jpg",1);
cvShowImage("TEST",image);
cvWaitKey();
Run Code Online (Sandbox Code Playgroud)
您的.pro文件应具有前面提到的以下行...
INCLUDEPATH += D:\OpenCV\opencv\build\include
LIBS +=-LD:\OpenCV\opencv\build\x64\mingw\lib\
-lopencv_core242\
-lopencv_highgui242\
-lopencv_imgproc242\
-lopencv_video242\
Run Code Online (Sandbox Code Playgroud)
和你的系统变量名为path应该有
在编辑路径变量之后关闭Qt ide/application并重新启动它以使系统变量更改以反映出来.