Win7_64位_QT5.3.2_CMake2.8.12_OpenCV2.3.1

在Qt中使用OpenCV我遇到的问题有:

1、CMaka版本太高(第一次使用的是3.1)导致在cmd中执行mingw32-make时在50%时出错,换了现在的Cmake2.8.12就ok了(具体换成哪个版本及是否是版本问题,我是尝试后偶然解决的);

2、QT最好使用自带有MinGW和QtCreator,即在官网下载相应的全套安装包;单个下载也可以,但是可能不同版本之间会出现一些错误;

3、读入图片

pImg=cvLoadImage("C:/2.jpg",CV_LOAD_IMAGE_COLOR);

image=imread("C:/2.jpg");

要是用‘ / ’  而不是 windows中的‘ \ '  ;

害得我重装了一次


所以步骤具体如下:

一、安装Qt
注意两点:
1、记得勾选MinGW这个选项;

2、是记得安装后把类似于
“C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin”

“C:\Qt\Qt5.2.1\Tools\mingw48_32\bin”

“C:\Qt\Qt5.2.1\Tools\mingw48_32\i686-w64-mingw32\lib”
的三个路径添加到环境变量中(其实不用全部包含,具体哪个不用包含我没有测试)。

其他的过程都一路next就可以了。

二、安装CMake
注意两点:

1、安装路径不能有中文和空格;

2、安装时勾选上:添加CMake到环境变量中给所有用户


三、解压OpenCV

解压后大致如下:不同版本解压的文件目录有差异


四、使用CMake编译OpenCV

打开CMake-gui.exe

源路径Source code:填写opencv解压得到的目标路径

Build the binaries:填写你要把编译后的东西放到的地方(随意找个合适的地方)例如C:\OpenCV

点击configure,选MinGW Makefile,选第一项“use default native compilers”,表示选择默认的编译器

Finish后CMake首先监测一些参数,正常应出现一大片红色,但这个地方可能有error,容易出现的问题是提示各种找不到环境变量,回看“一安装qt”部分内容。

如果顺利则勾上WITH_QT和WITH_OPENGL,看自己的需要了。再次点击configure,可能提示找不到qt5xxx或找不到lib的,这时环境变量是否添加了,如果没添请

填上,请注意:填上后重新启动CMake!。

有个关于QT_QMAKE项,看是否是NOT FOUND的,若果是,在Qt5安装目录下找到qmake.exe把路径复制到NOT FOUND处,然后修改“\”为“/”!直接复制的不符合规格,例如应

该是:“C:/Qt/Qt5.3.2/5.3/mingw482_32/binqmake.exe”


五、编译OpenCV

进入cmd,进入刚才CMake时设置的目标路径,输入mingw32-make命令开始编译

我的超极本电脑编译大概30分钟左右,具体多少看你电脑性能了

编译完成后执行:mingw32-make install

几分钟就ok


六、整合

 编译工作已经完成。只需要三个文件夹: 1) 原始的opencv解压文件后的build/include 2) 编译后目标路径中的bin 3) 编译后目标路径中的lib 其他的都可以删去。

把上述说那个文件放到同一个文件夹中,再放到合适的位置例如“C:\qt_opencv_used\(三个文件夹)”;

我测试了一下把OpenCV编译目录中的lib、bin、include三个拷贝出来也能用,但是对比了一下好像还是缺少一些文件

 把上述bin添加到环境变量中添加错误或不添加会出现编写程序查不出任何错误,也不会有任何报错,只要一运行就会“程序异常停止运行”。这样,环境就算配置好了


七、测试

打开Qt Creator,新建一个空工程,然后添加一个cpp文件  
在pro文件中添加如下OpenCV的依赖文件

<span style="color:#800080;">INCLUDEPATH</span>+=C:\qt_opencv_used\<span style="color:#808000;">include</span>\opencv<span style="color:#c0c0c0;"> </span>\<pre style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">C:\qt_opencv_used\<span style="color:#808000;">include</span>\opencv2<span style="color:#c0c0c0;"> </span>\
C:\qt_opencv_used\include
 
LIBS+=C:\qt_opencv_used\lib\libopencv_calib3d231.dll.a \
C:\qt_opencv_used\lib\libopencv_contrib231.dll.a \
C:\qt_opencv_used\lib\libopencv_core231.dll.a \
C:\qt_opencv_used\lib\libopencv_features2d231.dll.a\
C:\qt_opencv_used\lib\libopencv_flann231.dll.a\
C:\qt_opencv_used\lib\libopencv_gpu231.dll.a\
C:\qt_opencv_used\lib\libopencv_highgui231.dll.a\
C:\qt_opencv_used\lib\libopencv_imgproc231.dll.a\
C:\qt_opencv_used\lib\libopencv_legacy231.dll.a\
C:\qt_opencv_used\lib\libopencv_ml231.dll.a\
C:\qt_opencv_used\lib\libopencv_objdetect231.dll.a\
C:\qt_opencv_used\lib\libopencv_video231.dll.a
 
 

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
using namespace cv;

#if 1
int main() {
    //声明IplImage指针
    IplImage* pImg;
    //载入图片
    pImg=cvLoadImage("C:/2.jpg",CV_LOAD_IMAGE_COLOR);  //C:\2.jpg 要使用'/' 而不是windows的 '\'
    if(NULL==pImg)
    {
        printf("image can't read!\n");
    }
   // Mat image(pImg); //有这句话,为什么会出错
    //创建窗口
    cvNamedWindow("Image",CV_WINDOW_AUTOSIZE);  // 注释掉这句话,程序尼玛也运行
    //显示图像
    cvShowImage("Image",pImg);
    //等待按键
    cvWaitKey(0);
    //销毁窗口
    cvDestroyWindow("Image");
    //释放图像
    cvReleaseImage(&pImg);
    return 0;
}
#else
int main()
{
    Mat image;
    image=imread("C:/2.jpg");
    imshow("li",image);
    waitKey();
    return 0;
}
#endif

结果:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值