在Qt下静态编译OpenCV过程记录

来源:互联网 发布:投稿软件 编辑:程序博客网 时间:2024/06/15 00:27

最近一直在补图像处理的知识,想搭个平台做一些算法。刚好有个案子打算用静态编译的OpenCV。

好久没用过OpenCV了,找到自己以前配置的:http://blog.csdn.net/yh_1988/article/details/50758878

发现做静态编译有问题没办法用。


只好再重新配置一次环境,也做个记录。

本以为挺简单2个晚上时间搞定的,没想到最后配置下来用了整整2天时间。



------------------下面进入下题目------------------------------------------------------------------

第一步:安装软件

1.1:安装QtSDK

下载地址:http://www.qtcn.org/bbs/read-htm-tid-1075.html

这个直接下载安装即可,我是电脑里有,直接安装的5.3.1和5.5.1

1.2:安装OpenCV

下载地址:http://wiki.opencv.org.cn/index.php/首页

下载后直接选择解压路径解压即可

1.3:安装Cmake

直接安装CMake2.8.10(CMake3测试也相同),注意安装的时候选择加入到系统环境变量

小插曲:开始配置完无法编译OpenCV,以为是CMake版本问题,换个几个最新的版本也不行,

后来验证是系统环境变量设置问题,跟CMake版本没关系。

--------------------下面进入第二步------------------------------------------------------------

第二步:添加环境变量

添加如下3个:注意缺一不可

-------------------第三步正题来了-----------------------------------------------------------

第三步:静态编译OpenCV

3.1 CMake设置源和目标位置


3.2设置编译器


3.3设置编译器(如上一步选Use default native compilers此步可以系统自动加载)


3.4如有报错CUDA_TOOLKIT_ROOT_DIR找不到,直接手动指定到Tool/mingw/bin即可


3.5 重新Configure,不再报错

3.6(重要的一步)设定静态编译
如不操作此步就是普通编译,有设定则改为静态编译
取消勾选DUILD_SHARED_LIBS既为静态编译

3.7 重新Configure,无错后Generate

3.8用CMD编译
     输入 D:     进入所在盘
     输入 CD D:\opencv\MinGw     进入目录
     输入 mingw32-make     开始编译(约15分钟,无报错完成)
     输入 mingw32-make install     安装(1分钟)

-------------------------------编译完成,下面安装--------------------------------------------------------------------
第四步:安装
4.1拷贝使用到的文件(只用到如下文件,其它安装的和生成的可以统统删掉了)
     D:\opencv\MinGw\install目录下
          include
          lib
          bin
     D:\opencv\MinGw\install\share\OpenCV目录下
          3rdparty
     拷贝上面4个文件夹到安装目录下如:C:\Qt\OpenCV2.3.1_static

4.2普通编译需要添加上一步的bin目录到系统环境变量,静态编译不需要

-----------------------------安装完成,就这么简单,book思议吧^_^------------------------------------------------
别急,安装完了不会用也不行啊。
第五步:使用
5.1修改Qt 的.pro文件,添加     
INCLUDEPATH += C:/Qt/OpenCV2.3.1_static/include/opencv \
            C:/Qt/OpenCV2.3.1_static/include/opencv2 \
            C:/Qt/OpenCV2.3.1_static/include
LIBS += C:/Qt/OpenCV2.3.1_static/lib/libopencv_*.a \
            C:/Qt/OpenCV2.3.1_static/3rdparty/lib/*.a
5.2 工程头文件添加

#include "cv.h"
#include"cxcore.h"
#include"highgui.h"

5.3 测试程序

void Widget::paintEvent(QPaintEvent*)
{
    cv::Mat pimg0 = cv::imread(tr("./1.jpg").toLatin1().data());
    cv::cvtColor(pimg0,pimg0,CV_BGR2RGB);
    QImage image = QImage((const unsigned char*)(pimg0.data),pimg0.cols,pimg0.rows, pimg0.cols*pimg0.channels(),QImage::Format_RGB888); ;
    //image.load("./1.png");
    ui->label->setPixmap(QPixmap::fromImage(image));
}
-----------------------现在可以使用OpenCV了----------------------------------------------------------------


插曲:在另一台电脑上安装编译好的环境过程

1安装QtSDK
2安装静态编译好的Qt
     设置Qt Versions          设置构建套件(Kit)          2步完成
3建立项目测试Qt静态编译
     程序编译大小为14.5M独立运行正常
4安装编译好的OpenCV
     1.pro文件链接库
     2工程文件添加头包含
     3使用简单OpenCV函数
          开始显示不成功是因为转换函数写错导致的QImage image = QImage((const unsigned char*)(pimg0.data),pimg0.cols,pimg0.rows,QImage::Format_RGB888);
修改为正确的:运行正常
void Widget::paintEvent(QPaintEvent*)
{
    cv::Mat pimg0 = cv::imread(tr("./1.jpg").toLatin1().data());
    cv::cvtColor(pimg0,pimg0,CV_BGR2RGB);
    QImage image = QImage((const unsigned char*)(pimg0.data),pimg0.cols,pimg0.rows, pimg0.cols*pimg0.channels(),QImage::Format_RGB888); ;
    //image.load("./1.png");
    ui->label->setPixmap(QPixmap::fromImage(image));
}
程序说明:OpenCV加载图像,转换为QImage,使用QLabel显示
5显示图像,图像根据窗口大小缩放
ui添加widget,使用布局。widget内添加QLable,布局放在左上角
程序添加ui->label->resize(ui->widget->size());窗口变化时同步lable与widget大小 
添加ui->label->setPixmap(QPixmap::fromImage(image.scaled(QSize(ui->label->width(),ui->label->height()))));用QLable大小缩放图像。

0 0