在Qt Creator中使用Opencv 2

合集下载

opencv在QT中的配置和使用教程

opencv在QT中的配置和使用教程

opencv在QT中的配置和使⽤教程本⽂使⽤的软件包:QT、cmake、opencv库由于主要参考的是以下两个博客,这⾥就根据他们的内容关键点截图加上⼀些⾃⼰遇到的问题来写,具体细节可参考下⾯两个链接。

1. 2. ⼀、软件安装(1)QT下载地址:QT安装具体细节见博客2,注意以下⼏步同时注意系统变量的添加,博客⼆中有详细说明。

(2)cmake下载地址:选最新版本即可(3)opencv下载地址:根据⾃⼰的系统选择⼆、使⽤cmake编译opencv(1)根据⾃⼰的opencv版本号选择解压(2)等待源代码解压完成(3)解压完成后,启动刚刚安装好的Cmake程序,⾃⼰填写OpenCV刚刚解压的源码⽬录,以及⾃⼰新建⼀个⽂件夹⽤于存放编译完成的opencv,填写到下⼀⾏的编译⽬标⽬录,然后点击下⽅的configure按钮进⾏第⼀次配置。

(4)选择MinGw Makefiles,然后选择第⼆项,完成后点击下⼀步(5)指定c编译器和c++编译器的路径,请找到你的QT⽬录\Tools\mingw730_64\bin下的gcc.exe和g++.exe程序,依次对应填写。

(6)等待第⼀次configure完成。

(configure到最后可能会下载opencv_videoio_ffmpeg相关库⽂件,如果没有梯⼦的话可能会⽐较久)(7)configure完成后,需要配置⼀些参数。

在第三⾏的Search中,搜索WITH_QT,打勾。

搜索WITH_OPENGL,打勾。

搜索ENABLE_PRECOMPILED_HEADERS,取消打勾。

搜索QT5_DIR,将“你的QT路径\5.13.0\mingw73_64\lib\cmake\Qt5”填进去。

例如我的是:D:\WorkApp\QT\5.13.0\mingw73_64\lib\cmake\Qt5,完成以上操作后点击Configure进⾏第⼆次Configure。

(8)第⼆次Configure完成后,点击Generate⽣成opencv编译⽂件到⽬标⽬录。

opencv库用法

opencv库用法

opencv库用法
OpenCV是计算机视觉中常用的专用库,支持多语言和跨平台操作。

其在Python中的使用方法如下:
1. 导入OpenCV模块:使用`import cv2`命令。

2. 加载图片:使用`cv2.imread()`函数读取图片。

参数为1时表示加载彩色图片,参数为0时表示加载黑白图片。

3. 查看图片形状和分辨率:使用`shape`子函数输出图片的形状。

4. 显示图片:使用`cv2.imshow()`函数显示图片,参数分别为图片名称和图片对象。

OpenCV还可以用于操作摄像头、调节参数和录制视频等操作。

如果你想要了解更多关于OpenCV的用法,可以查阅相关文档或搜索相关教程。

Qt里添加OpenCV库

Qt里添加OpenCV库

Qt里添加OpenCV库0、新建一个控制台工程唯一需要注意的是选择编译器,这一定要和你的opencv下载的编译版本一致!我下载的opencv是msvc2015编译的64位所以这里一定要选择相同的!1、新建的工程点右键,选择添加库,如下图:2、选择外部库3、找到Opencv解压目录下的opencv\build\x64\vc15\lib\opencv_world401.lib 添加include 路径opencv\build\include,具体操作看下图:特别需要注意的是:需要把opencv\build\x64\vc15\lib\bin目录添加到环境变量里Path里4.点击确定后,工程文件*.pro里会添加如下内容:win32:CONFIG(release,debug|release):LIBS+=-LD:/opencv/build/x64/vc15/lib/-lopencv_world401else:win32:CONFIG(debug,debug|release):LIBS+=-LD:/opencv/build/x64/vc15/lib/-lopencv_world401delse:unix:LIBS+=-LD:/opencv/build/x64/vc15/lib/-lopencv_world401INCLUDEPATH+=D:/opencv/build/includeDEPENDPATH+=D:/opencv/build/include5.保存工程,执行qmake,更新工程make文件。

这一步很重要,新手往往忘记这一步导致不能使用!!6. 测试opencv库的安装,在main文件里使用:#include<QCoreApplication>#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>int main(int argc,char*argv[]){QCoreApplication a(argc,argv);cv::Mat img=cv::imread("d:/tmp.bmp",0);cv::imshow("imgtest",img);cv::waitKey(0);return a.exec();}显示结果:同样的道理可以安装其他c++库。

OpenCV与Qt的环境搭建及Demo

OpenCV与Qt的环境搭建及Demo

OpenCV与Qt的环境搭建及Demo前⾔:前段时间写了很多OpenCV的程序,虽然重点在算法上,但图像窗⼝只能靠cvNamedWindow,效果很不理想。

遂希望⽤Qt配合OpenCV使⽤,为我的程序建⽴图形化界⾯。

然⽽,依我对OpenCV的了解,环境配置⼀定是⽞学,在解决了多个问题后,终于实现了Demo,在这⾥分享下我的成果,也感谢⽂末参考资料中的各位博主。

Qt在Windows环境下有两种编译⽅式,MinGW和msvc。

msvc就是微软的VC运⾏库,只要安装了Visual Studio就⾃带了,在编译速度上⽐较有优势。

缺点是,采⽤msvc编译的话,需要单独安装cdb调试⼯具,才能在Qt中进⾏单步调试,本⽂将采⽤Win10 64bit+opencv 2.4.10 + Qt5.8.0 + VS2013配置环境。

第⼀步:安装与配置OpenCV在此,我们假设你的电脑上已经安装了Visual Studio,本⽂将不再赘述。

因为某些历史问题,我的OpenCV的版本为2.4.10,如果你的版本也是2.x.x,那么你可以直接将2410替换成你的版本。

1. 从下载OpenCV并解压到⼀个⽬录中,我们假设解压到了"D:\opencv\"中。

2. 配置环境变量,在系统->⾼级系统设置->环境变量->系统变量中,找到Path,并添加"D:\opencv\build\x64\vc12\bin"。

请注意上⾯路径中的x64/vc12是需要根据你系统的版本⾃⾏替换的。

第⼆步:安装与配置Qt1. 从下载Qt,并注册账户、开始安装。

注意在安装过程中需要选择MSVC2013 64bit的kit,当然,这也需要根据你系统的版本进⾏替换。

2. 新建⼀个Qt Widges Application,注意勾选VSVC2013。

如果⼀切就绪,Qt Creator中应该为下图所⽰。

3.4. 可以看到,⼀个简单的Qt项⽬由.pro⽂件,头⽂件、源⽂件、界⾯⽂件组成,今后我们都将⽤到。

在QtCreator中使用Opencv2

在QtCreator中使用Opencv2

在Qt Creator中使用Opencv 2.3分类:数字图像处理Qt2012-04-18 17:21 104人阅读评论(0) 收藏举报打开Qt项目中的.pro文件,添加如下代码INCLUDEPATH+=D:\OpenCV\opencv\build\include\opencv2\D:\OpenCV\opencv\build\include\opencv\D:\OpenCV\opencv\build\includeCONFIG(release,debug|release){LIBS+=D:\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_contrib231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_core231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_flann231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_gpu231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_legacy231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ml231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_objdetect231.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ts231.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_video231.lib}CONFIG(debug,debug|release){LIBS+=D:\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_contrib231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_core231d.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_flann231d.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_gpu231d.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_legacy231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ml231d.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_objdetect231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ts231d.lib\D:\OpenCV\opencv\build\x86\vc10\lib\opencv_video231d.lib}注意,你的代码中的路径要根据OpenCV的具体安装路径做改变。

基于qt+opencv数字图像处理实验一般步骤

基于qt+opencv数字图像处理实验一般步骤

基于QtCreator+openCV的数字图像处理实验一般步骤一、新建Qt Widgets Application项目二、设计应用界面1.拖放所需控件2.应用布局3.修改界面各个对象的文本和名称三、复制图像类型转换类单元文件到项目文件夹Imageconversion是用于Qt图像对象类型与OpenCV图像对象类型直接的转换,是整理自网络,把这两个文件复制到项目文件夹下,方便使用。

四、在构建文件和有关文件头包含openCV库1. 在项目文件“项目名称.pro”文件(*.pro 基本上是构建工程项目时由Qt 处理的第一个文件,这个文件称为Qt 项目文件,一个名为“qmake”的内部Qt 程序负责处理该文件最后添加如下指令语句:include(E:\openCV\opencv331.pri)看起来是这样的:其中opencv331.pri的文件含openCV包含路径和库文件路径,可以把这些路径信息直接一一写在Qt项目文件中,但是比较麻烦。

把这些路径信息统一写在一个文件里面,方便使用。

这个需要根据用户的实际安排情况调整,我的opencv331.pri文件内容如下:INCLUDEPATH+=E:\openCV\opencv331build\install\includeLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_core331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_highgui331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_imgcodecs331.dllLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_imgproc331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_features2d331.dllLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_calib3d331.dll 2.在头文件中包含opencv、图像数据类型转换以及常用Qt控件#include<QPixmap>//Qt图像类,适用于屏显#include<QFileDialog>//打开文件对话框#include<QFileInfo>//文件信息类#include<QGraphicsScene>//用于管理2D图形对象#include<QString>//Qt字符串类#include<QMessageBox>//弹出窗口类#include<opencv2/core/core.hpp>//openCV头文件#include<opencv2/highgui/highgui.hpp>//OpenCV头文件#include"imageconversion.h"//图像数据类型转换using namespace cv;五、在mainwindow.h声明私有数据成员1. 与图像读、写和显示有关的几个数据成员:QGraphicsScene sceneL,sceneR,scene;//与QgraphicsView配合显示图像QPixmap pixmapL,pixmapR,pixmap; //用于读、写图像//以后参数根据需要定义double a,b,c,d,nc,r,threshold;enum PointOperation{None=0,LinearExpand,NonLinearExpand,GrayInvert,BitWise} pointOperation;int fusionOperation;void rotate_arbitrarily_angle(cv::Mat&src,cv::Mat&dst,float angle);2. 在构造函数关联场景和图像显示对象ui->srcGraphicsView->setScene(&srcScene);//关联场景和图形显示对象ui->dstGraphicsView->setScene(&dstScene);如下图:六、定义动作控件槽函数1.打开或关闭图像文件if(ui->openButton->text()=="关闭图像"){sceneL.clear();ui->openButton->setText("打开图像");ui->saveButton->setEnabled(false);return;}QString fileName=QFileDialog::getOpenFileName(this,"打开图像",QDir::currentPath(),"Images(*.png*.bmp*.jpg*.tif)");if(!fileName.isNull()){QFileInfo file(fileName);if(pixmapL.load(file.absoluteFilePath())){sceneL.clear();//清除原有图像信息sceneL.addPixmap(pixmapL);ui->openButton->setText("关闭图像");ui->saveAsButton->setEnabled(false);}}return;2.保存图像QString fileName=QFileDialog::getSaveFileName(this,"保存图像",QDir::currentPath(),"Images(*.png*.bmp*.jpg*.tif)");if(pixmap.save(fileName,0,100))QMessageBox::information(this,tr("OK"),tr("保存成功"));elseQMessageBox::information(this,tr("NG"),tr("保存失败"));3.图像处理代码,以加法点运算为例fusionOperation=ui->fusionBox->currentIndex();if(fusionOperation==0){ui->resulLable->setText("出错啦!");QMessageBox::information(this,tr("错误"),tr("请选择算法"));return;}//图像类型转换ImageConversion imgConversion;cv::Mat mat0=imgConversion.QPixmapToCvMat(pixmapL);cv::Mat mat,img1,img2,img;cvtColor(mat0,mat,CV_BGR2GRAY);//mat1,8位无符号数图像mat.convertTo(img1,CV_64FC1);//double类型图像,0~255,图像1 mat0=imgConversion.QPixmapToCvMat(pixmapR);cvtColor(mat0,mat,CV_BGR2GRAY);//mat.convertTo(img2,CV_64FC1);//double类型图像,0~255,图像2 switch(fusionOperation){case1:img=0.5*img1+0.5*img2;ui->resulLable->setText("五五开融合结果图像");break;case2:img=0.3*img1+0.7*img2;ui->resulLable->setText("三七开融合结果图像");break;default:break;}img.convertTo(mat,CV_8UC1);pixmap=imgConversion.cvMatToQPixmap(mat);scene.clear();scene.addPixmap(pixmap);ui->saveAsButton->setEnabled(true);4.点运算处理代码pointOperation=(enum PointOperation)ui->pointOperationBox->currentIndex();if(pointOperation==None){ui->resulLable->setText("出错啦!");QMessageBox::information(this,tr("错误"),tr("请选择算法"));return;}ImageConversion imgConversion;cv::Mat mat0=imgConversion.QPixmapToCvMat(pixmapL);cv::Mat mat1,img1;cvtColor(mat0,mat1,CV_BGR2GRAY);//mat1,8位无符号数图像mat1.convertTo(img1,CV_64FC1);//double类型图像switch(pointOperation){case LinearExpand://ui->aEdit->setValidator(new QDoubleValidator(0.0,1.0,2,this));a=ui->aEdit->text().toDouble();b=ui->bEdit->text().toDouble();c=ui->cEdit->text().toDouble();d=ui->dEdit->text().toDouble();for(int i=0;i<img1.rows;i++){double*pixrow=img1.ptr<double>(i);for(int j=0;j<img1.cols;j++){if(pixrow[j]<=a*255)pixrow[j]=c*255;else if(pixrow[j]>=b*255)pixrow[j]=d*255;elsepixrow[j]=c*255+(pixrow[j]-a*255)/(b-a)*(d-c)*255;/*********************************************if(img1.at<double>(i,j)<=a*255)img1.at<double>(i,j)=c*255;else if(img1.at<double>(i,j)>=b*255)img1.at<double>(i,j)=d*255;elseimg1.at<double>(i,j)=c+(img1.at<double>(i,j)-a*255)/(b-a)*(d-c)*255;*********************************************************************/}}ui->resulLable->setText("线性扩展结果图像");break;case NonLinearExpand:nc=ui->ncEdit->text().toDouble();cv::log(img1/255+1.0,mat0);img1=mat0*nc*255;ui->resulLable->setText("非线性扩展结果图像");break;case GrayInvert:img1=255-mat1;ui->resulLable->setText("灰度倒置结果图像");break;case BitWise:threshold=ui->thresholdEdit->text().toDouble();for(int i=0;i<img1.rows;i++){double*pixrow=img1.ptr<double>(i);for(int j=0;j<img1.cols;j++){if(pixrow[j]>=threshold*255)pixrow[j]=255;elsepixrow[j]=0;}}ui->resulLable->setText("二值化结果图像");break;default:break;}img1.convertTo(mat1,CV_8UC1);pixmap=imgConversion.cvMatToQPixmap(mat1);scene.clear();scene.addPixmap(pixmap);ui->saveAsButton->setEnabled(true);5.图像旋转代码/*******************************************************************以下代码来自csdn上“笨笨的小棒棒”的个人博客:*https:///u013263891/article/details/83932479*在此对作者表示感谢!*****************************************************************/void MainWindow::rotate_arbitrarily_angle(cv::Mat&src,cv::Mat&dst,float angle) {float radian=(float)(angle/180.0*CV_PI);//填充图像int maxBorder=(int)(max(src.cols,src.rows)* 1.414);//即为sqrt(2)*max int dx=(maxBorder-src.cols)/2;int dy=(maxBorder-src.rows)/2;copyMakeBorder(src,dst,dy,dy,dx,dx,BORDER_CONSTANT);//旋转Point2f center((float)(dst.cols/2),(float)(dst.rows/2));Mat affine_matrix=getRotationMatrix2D(center,angle, 1.0);//求得旋转矩阵warpAffine(dst,dst,affine_matrix,dst.size());//计算图像旋转之后包含图像的最大的矩形float sinVal=abs(sin(radian));float cosVal=abs(cos(radian));Size targetSize((int)(src.cols*cosVal+src.rows*sinVal),(int)(src.cols*sinVal+src.rows*cosVal));//剪掉多余边框int x=(dst.cols-targetSize.width)/2;int y=(dst.rows-targetSize.height)/2;Rect rect(x,y,targetSize.width,targetSize.height);dst=Mat(dst,rect);}七、如何修改QtCreator应用程序名称修改*.pro文件名称,以及*.pro文件内“TARGET”项的值八、常用1.对象命名用词(1)打开open(2)保存save(3)拉伸stretch(4)平滑smooth(5)锐化sharpen(6)增强enhancement(7)恢复restore(8)分割Segment2.常用openCV函数(1)直方图均衡化Void equalizeHist(InputArray src, OutputArray dst);(2)OpenCV 中获取图像或矩阵最大、最小值C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray() )C++: void minMaxLoc(const SparseMat& a, double* minVal, double* maxVal, int*minIdx=0, int*maxIdx=0 )。

win7 qtcreator+opencv安装与配置

win7  qtcreator+opencv安装与配置

Win7(X64/x86)Qt creator OpenCV2.3配置(v2.0)guo8113说明:对Qt creator、Opencv、mingw不做解释,不懂自己查资料1、需要的软件:(所有软件均可联系本人)QtCreator2.3下载地址:qt官网qt-win-opensource-4.8.4-mingw(qt官网下载)MinGW-gcc440_1(经测试3.X的版本是安装不成功的,我在这上面最少浪费了半天时间)OpenCV-2.3.1-win-superpackcmake-2.8.10.2-win32-x86/cmake/resources/software.html2、软件安装:所有软件安装到C盘根目录下,切记不可有中文目录⏹解压或安装MinGW-gcc440_1,至C盘c:\mingw添加系统环境变量“计算机->右键属性->高级系统设置-》高级”在系统环境变量新建:变量名mingw值C:\mingw⏹安装cmake⏹安装opencv⏹安装qt和qtcreator3、编译与安装3.1 Cmake生成opencvmakefile打开cmake配置源码与安装路径源码路径要包括以下内容目标路径笔者设置为c:\Qt\opencv23.2配置:configure:在下面的选择框选择mingw makefiles,点击finish3.3生成:点击generate3.4进入设置好的目标路径执行在cmd里输入cd c:\Qt\OpenCV2输入:mingw32-make进行编译等待40分钟左右编译完成:执行mingw32-make install进行安装:安装完之后将opencv的bin目录添加到环境变量4配置QTcreator打开QTcreator,工具-选项配置几项如下图:编译器mingwQTCmake5.QT creator配置把c:\Qt\OpenCV2目录下install文件夹中的所有文件包含bin lib include 文件夹,拿到c:\Qt\OpenCV2下(这几个是必须的,其他的可以删掉)。

Qt添加库文件和头文件目录(QCreator)

Qt添加库文件和头文件目录(QCreator)

Qt添加库⽂件和头⽂件⽬录(QCreator)在使⽤QtCreator开发图像处理程序的时候想加⼊Opencv库来处理图形,添加头⽂件,需要编辑⼯程⽂件夹下的.pro⽂件在⽂件中添加以下内容,即可包含头⽂件的⽂件夹:INCLUDEPATH +=D:\OpenCV2.0\vc2008\include\opencv(D:\OpenCV2.0\vc2008\include\opencv就是我的opencv头⽂件所在的⽂件夹,如果还增加其他的头⽂件,就再添加相应的内容到.pro⽂件中)光添加头⽂件还是会报错的,需要添加相应的库⽂件到相应的⼯程中,这样我们就需要添加库⽂件到⼯程中:LIBS += D:\OpenCV2.0\vc2008\lib\cv200.libLIBS += D:\OpenCV2.0\vc2008\lib\cv200d.libLIBS +=D:\OpenCV2.0\vc2008\lib\cxcore200.libLIBS += D:\OpenCV2.0\vc2008\lib\cxcore200d.libLIBS += D:\OpenCV2.0\vc2008\lib\ml200.libLIBS += D:\OpenCV2.0\vc2008\lib\ml200d.libLIBS +=D:\OpenCV2.0\vc2008\lib\cvaux200.libLIBS +=D:\OpenCV2.0\vc2008\lib\cvaux200d.libLIBS += D:\OpenCV2.0\vc2008\lib\highgui200.libLIBS +=D:\OpenCV2.0\vc2008\lib\highgui200d.libLIBS += D:\OpenCV2.0\vc2008\lib\cxts200.libLIBS +=D:\OpenCV2.0\vc2008\lib\cxts200d.lib相信会编程的朋友都知道该怎么做了,我就不赘述了。

opencv2基本操作

opencv2基本操作

opencv2基本操作OpenCV2基本操作——一步一步回答引言:OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,旨在提供一系列图像处理和计算机视觉算法的函数,可用于处理图像、视频、对象识别等应用。

本文将介绍OpenCV2的基本操作,以中括号为主题,带您一步一步了解如何使用OpenCV2进行图像处理和计算机视觉。

第一步:安装和配置OpenCV21. 下载OpenCV2库:打开OpenCV官网(2. 安装OpenCV2:根据下载的安装包进行安装,并按照安装向导完成安装过程。

3. 配置环境变量:在系统环境变量中添加OpenCV2库的路径,以便编译和执行OpenCV2的程序。

第二步:导入OpenCV2模块在Python中,我们可以使用"import cv2"语句导入OpenCV2模块。

这将使我们能够使用OpenCV2的函数和方法。

第三步:图像读取和显示1. 使用"cv2.imread()"函数读取图像文件:可以传递图像文件路径作为参数,函数将返回一个代表图像的numpy数组。

2. 使用"cv2.imshow()"函数显示图像:将图像的numpy数组作为第一个参数传递给该函数,然后指定窗口的名称作为第二个参数。

示例代码:pythonimport cv2# 读取图像image = cv2.imread("image.jpg")# 显示图像cv2.imshow("Image", image)# 等待按键cv2.waitKey(0)# 关闭窗口cv2.destroyAllWindows()第四步:图像保存使用"cv2.imwrite()"函数保存图像。

该函数需要传递保存路径和图像的numpy 数组作为参数。

如果路径不存在,函数将创建该路径。

opencv2计算机视觉编程手册

opencv2计算机视觉编程手册

[文章标题:深度探索opencv2计算机视觉编程手册]在计算机视觉的领域中,OpenCV(Open Source Computer Vision Library)被广泛认可为最流行的开源计算机视觉库之一。

而在其中,opencv2版本则是其最新的一个版本,提供了丰富的功能和工具,可以帮助开发者进行图像处理、目标识别、人脸识别等多种计算机视觉任务。

在本文中,我们将深度探索opencv2计算机视觉编程手册,从基础入门到高级应用,带你全面了解其功能和应用。

1. opencv2计算机视觉基础入门让我们从opencv2的基础入手,探讨其在计算机视觉领域的应用和功能。

opencv2提供了丰富的图像处理工具,包括图像的读取、显示、保存等基本功能,同时也支持图像的像素操作、颜色空间转换、几何变换等高级操作。

通过学习opencv2的基础知识,我们可以掌握图像的基本处理方法和技巧,为进一步的应用打下坚实的基础。

2. opencv2计算机视觉进阶应用在掌握了opencv2的基础知识之后,让我们进一步探讨其在计算机视觉领域的进阶应用。

opencv2提供了强大的目标检测和识别功能,可以用于人脸识别、目标跟踪等场景。

opencv2还支持图像特征提取、图像匹配等高级图像处理技术,为复杂的计算机视觉任务提供了强大的支持。

通过深入学习opencv2的进阶应用,我们可以实现更多复杂的图像处理和计算机视觉任务,提升应用的效果和性能。

3. opencv2计算机视觉个人观点和理解在我看来,opencv2作为一个开源计算机视觉库,在图像处理和计算机视觉领域发挥着非常重要的作用。

它不仅提供了丰富的功能和工具,同时还有着活跃的社区和开发者支持,可以帮助开发者更好地应用和优化图像处理和计算机视觉任务。

我个人对opencv2的使用体验也非常好,它的文档和示例都非常丰富,为我在图像处理和计算机视觉领域的学习和工作提供了很大的帮助。

总结回顾opencv2计算机视觉编程手册是一个非常重要的学习资料和工具,它可以帮助我们全面了解图像处理和计算机视觉领域的知识和技术。

opencv2使用手册

opencv2使用手册

OpenCV(Open Source Computer Vision Library)是一个广泛用于计算机视觉任务的开源计算机视觉和机器学习库。

由于OpenCV 经常更新版本,因此以下是OpenCV 2.x 的基本使用示例和概述。

注意:OpenCV 2.x 目前已经过时,推荐使用更高版本(如OpenCV 3.x 或更高)以获取更多功能和性能优化。

以下是一个简单的OpenCV 2.x 使用手册概述:安装OpenCV 2.x:# 使用pip 安装OpenCV 2.xpip install opencv-python==2.4.13.7基本使用示例:import cv2# 读取图像image = cv2.imread('example.jpg')# 显示图像cv2.imshow('Image', image)cv2.waitKey(0)cv2.destroyAllWindows()图像处理:# 转换图像为灰度gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 阈值处理_, threshold_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)# 显示处理后的图像cv2.imshow('Gray Image', gray_image)cv2.imshow('Threshold Image', threshold_image)cv2.waitKey(0)cv2.destroyAllWindows()视频处理:import cv2# 打开摄像头cap = cv2.VideoCapture(0)while True:# 读取每一帧ret, frame = cap.read()# 显示帧cv2.imshow('Video', frame)# 按'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头资源cap.release()cv2.destroyAllWindows()更多功能:- **图像处理和分析:** 包括滤波、边缘检测、形状分析等。

qt工程环境设置

qt工程环境设置

qt⼯程环境设置在qt creator中⼯作遇到了环境设置的问题,导致了加班,为杜绝同类事情,写下相关总结。

1、Qt Creator 可以创建Qt⼯程,也可以创建c++⼯程。

2、在项⽬⼯程中,在⾃动创建的.pro⽂件中需要设置⼯程中使⽤的cpp源⽂件和h头⽂件路径,调⽤的库路径,动态库路径。

其中,cpp源⽂件、h头⽂件路径、调⽤的库路径是相对于.pro的位置写的路径或绝对路径,如SOURCES += \main.cpp \wbgraphicsscene.cpp \wbcanvasitem.cpp \wblinevector.cpp \wbtempcanvaslayer.cppHEADERS += \wbgraphicsscene.h \wbcanvasitem.h \wblinevector.h \wbtempcanvaslayer.hINCLUDEPATH += /usr/local/include \/usr/local/include/opencv2 ⽽动态库路径是相对于程序执⾏时的”Working dictory“写的相对位置,(Projects->Build&Run->run->Working dictory),⼯程执⾏run前需要先进⾏build,build时需要勾上Shadow build选项并设置”Build dictory“,(Projects->Build&Run->build->General),这就选定了程序编译的地址,正常来讲此处最先设置完成后,后续的make dictory和run选项的相关⽬录就⾃动设置好了,然后执⾏build,就可以run了。

动态库路径设置如下例所⽰:LIBS += -L../third_party/MNN-1.1.0/build -lMNN "../third_party/MNN-1.1.0/build" 是从相对Working dictory的位置写起,写⾄libMNN.so所在的位置 还有⼀种写法,可以写绝对路径,如下:LIBS += /usr/local/lib/libopencv_highgui.so \/usr/local/lib/libopencv_core.so \/usr/local/lib/libopencv_imgproc.so \/usr/local/lib/libopencv_imgcodecs.so 可以写绝对路径,因为/usr/local/lib的路径已经写在/etc/ld.so.conf⾥了。

OpenCV for Windows Qt+Creator安装

OpenCV for Windows Qt+Creator安装

Win7(X86)Qt Creator OpenCV2.3配置-by xmutyh20110819at IMS por 个人主页/yh_1988有问题欢迎前来讨论说明:Opencv1.0直接按OpenCV官方的方法安装就可以使用,不需要makeOpenCV2.0,OpenCV2.1,OpenCV2.2配置方法与OpenCV2.3大同小异如有不懂请联系:xmutyh@环境:windows7x860准备:0.1安装Qt SDK(Qt_SDK_Win_offline_v1_1_2_en.exe)0.2把C:\QtSDK\mingw\bin加入系统变量0.2.1【计算机】右键【属性】》【高级系统设置】》【高级】》【环境变量】》在系统变量里找到path变量0.2.2双击在最后加";"再添加“C:\QtSDK\mingw\bin;"【确定】1软件安装1.1.1到/index.php/Download下载最新版OpenCV for windows,superpack(exe格式OpenCV安装包)我下载的为:OpenCV-2.3.0-win-superpack.exe1.1.2运行安装OpenCV安装目录不可有中文和空格(qmake在解析路径的时候不能识别空格)我安装在C:/QtSDK/OpenCV1.1.3安装完成目录结1.2.1到/cmake/resources/software.html下载windows(win32Installer)我下载的为:cmake-2.8.5-win32-x86.exe1.2.2运行安装cmake其它所有设置默认即可2.用cmake编译OpenCV2.1.1打开CMake,配置源码与目标路径源码路径:要选择OpenCV安装目录下含有如下文件的文件夹(opencv)目标路径:自己任意设置2.2.1【Configure】(配置),在弹出的对话框选:MinGW Makefiles其他项可以默认2.2.2【finsish】2.3.1Cmake编译结束界面注:1Configure过程可能有报**not found可以忽略不管,只在Configure结束出来Configuring done即可。

基于qt+opencv数字图像处理实验一般步骤

基于qt+opencv数字图像处理实验一般步骤

基于QtCreator+openCV的数字图像处理实验一般步骤一、新建Qt Widgets Application项目二、设计应用界面1.拖放所需控件2.应用布局3.修改界面各个对象的文本和名称三、复制图像类型转换类单元文件到项目文件夹Imageconversion是用于Qt图像对象类型与OpenCV图像对象类型直接的转换,是整理自网络,把这两个文件复制到项目文件夹下,方便使用。

四、在构建文件和有关文件头包含openCV库1. 在项目文件“项目名称.pro”文件(*.pro 基本上是构建工程项目时由Qt 处理的第一个文件,这个文件称为Qt 项目文件,一个名为“qmake”的内部Qt 程序负责处理该文件最后添加如下指令语句:include(E:\openCV\opencv331.pri)看起来是这样的:其中opencv331.pri的文件含openCV包含路径和库文件路径,可以把这些路径信息直接一一写在Qt项目文件中,但是比较麻烦。

把这些路径信息统一写在一个文件里面,方便使用。

这个需要根据用户的实际安排情况调整,我的opencv331.pri文件内容如下:INCLUDEPATH+=E:\openCV\opencv331build\install\includeLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_core331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_highgui331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_imgcodecs331.dllLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_imgproc331.dll LIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_features2d331.dllLIBS+=E:\openCV\opencv331build\install\x86\mingw\bin\libopencv_calib3d331.dll 2.在头文件中包含opencv、图像数据类型转换以及常用Qt控件#include<QPixmap>//Qt图像类,适用于屏显#include<QFileDialog>//打开文件对话框#include<QFileInfo>//文件信息类#include<QGraphicsScene>//用于管理2D图形对象#include<QString>//Qt字符串类#include<QMessageBox>//弹出窗口类#include<opencv2/core/core.hpp>//openCV头文件#include<opencv2/highgui/highgui.hpp>//OpenCV头文件#include"imageconversion.h"//图像数据类型转换using namespace cv;五、在mainwindow.h声明私有数据成员1. 与图像读、写和显示有关的几个数据成员:QGraphicsScene sceneL,sceneR,scene;//与QgraphicsView配合显示图像QPixmap pixmapL,pixmapR,pixmap; //用于读、写图像//以后参数根据需要定义double a,b,c,d,nc,r,threshold;enum PointOperation{None=0,LinearExpand,NonLinearExpand,GrayInvert,BitWise} pointOperation;int fusionOperation;void rotate_arbitrarily_angle(cv::Mat&src,cv::Mat&dst,float angle);2. 在构造函数关联场景和图像显示对象ui->srcGraphicsView->setScene(&srcScene);//关联场景和图形显示对象ui->dstGraphicsView->setScene(&dstScene);如下图:六、定义动作控件槽函数1.打开或关闭图像文件if(ui->openButton->text()=="关闭图像"){sceneL.clear();ui->openButton->setText("打开图像");ui->saveButton->setEnabled(false);return;}QString fileName=QFileDialog::getOpenFileName(this,"打开图像",QDir::currentPath(),"Images(*.png*.bmp*.jpg*.tif)");if(!fileName.isNull()){QFileInfo file(fileName);if(pixmapL.load(file.absoluteFilePath())){sceneL.clear();//清除原有图像信息sceneL.addPixmap(pixmapL);ui->openButton->setText("关闭图像");ui->saveAsButton->setEnabled(false);}}return;2.保存图像QString fileName=QFileDialog::getSaveFileName(this,"保存图像",QDir::currentPath(),"Images(*.png*.bmp*.jpg*.tif)");if(pixmap.save(fileName,0,100))QMessageBox::information(this,tr("OK"),tr("保存成功"));elseQMessageBox::information(this,tr("NG"),tr("保存失败"));3.图像处理代码,以加法点运算为例fusionOperation=ui->fusionBox->currentIndex();if(fusionOperation==0){ui->resulLable->setText("出错啦!");QMessageBox::information(this,tr("错误"),tr("请选择算法"));return;}//图像类型转换ImageConversion imgConversion;cv::Mat mat0=imgConversion.QPixmapToCvMat(pixmapL);cv::Mat mat,img1,img2,img;cvtColor(mat0,mat,CV_BGR2GRAY);//mat1,8位无符号数图像mat.convertTo(img1,CV_64FC1);//double类型图像,0~255,图像1 mat0=imgConversion.QPixmapToCvMat(pixmapR);cvtColor(mat0,mat,CV_BGR2GRAY);//mat.convertTo(img2,CV_64FC1);//double类型图像,0~255,图像2 switch(fusionOperation){case1:img=0.5*img1+0.5*img2;ui->resulLable->setText("五五开融合结果图像");break;case2:img=0.3*img1+0.7*img2;ui->resulLable->setText("三七开融合结果图像");break;default:break;}img.convertTo(mat,CV_8UC1);pixmap=imgConversion.cvMatToQPixmap(mat);scene.clear();scene.addPixmap(pixmap);ui->saveAsButton->setEnabled(true);4.点运算处理代码pointOperation=(enum PointOperation)ui->pointOperationBox->currentIndex();if(pointOperation==None){ui->resulLable->setText("出错啦!");QMessageBox::information(this,tr("错误"),tr("请选择算法"));return;}ImageConversion imgConversion;cv::Mat mat0=imgConversion.QPixmapToCvMat(pixmapL);cv::Mat mat1,img1;cvtColor(mat0,mat1,CV_BGR2GRAY);//mat1,8位无符号数图像mat1.convertTo(img1,CV_64FC1);//double类型图像switch(pointOperation){case LinearExpand://ui->aEdit->setValidator(new QDoubleValidator(0.0,1.0,2,this));a=ui->aEdit->text().toDouble();b=ui->bEdit->text().toDouble();c=ui->cEdit->text().toDouble();d=ui->dEdit->text().toDouble();for(int i=0;i<img1.rows;i++){double*pixrow=img1.ptr<double>(i);for(int j=0;j<img1.cols;j++){if(pixrow[j]<=a*255)pixrow[j]=c*255;else if(pixrow[j]>=b*255)pixrow[j]=d*255;elsepixrow[j]=c*255+(pixrow[j]-a*255)/(b-a)*(d-c)*255;/*********************************************if(img1.at<double>(i,j)<=a*255)img1.at<double>(i,j)=c*255;else if(img1.at<double>(i,j)>=b*255)img1.at<double>(i,j)=d*255;elseimg1.at<double>(i,j)=c+(img1.at<double>(i,j)-a*255)/(b-a)*(d-c)*255;*********************************************************************/}}ui->resulLable->setText("线性扩展结果图像");break;case NonLinearExpand:nc=ui->ncEdit->text().toDouble();cv::log(img1/255+1.0,mat0);img1=mat0*nc*255;ui->resulLable->setText("非线性扩展结果图像");break;case GrayInvert:img1=255-mat1;ui->resulLable->setText("灰度倒置结果图像");break;case BitWise:threshold=ui->thresholdEdit->text().toDouble();for(int i=0;i<img1.rows;i++){double*pixrow=img1.ptr<double>(i);for(int j=0;j<img1.cols;j++){if(pixrow[j]>=threshold*255)pixrow[j]=255;elsepixrow[j]=0;}}ui->resulLable->setText("二值化结果图像");break;default:break;}img1.convertTo(mat1,CV_8UC1);pixmap=imgConversion.cvMatToQPixmap(mat1);scene.clear();scene.addPixmap(pixmap);ui->saveAsButton->setEnabled(true);5.图像旋转代码/*******************************************************************以下代码来自csdn上“笨笨的小棒棒”的个人博客:*https:///u013263891/article/details/83932479*在此对作者表示感谢!*****************************************************************/void MainWindow::rotate_arbitrarily_angle(cv::Mat&src,cv::Mat&dst,float angle) {float radian=(float)(angle/180.0*CV_PI);//填充图像int maxBorder=(int)(max(src.cols,src.rows)* 1.414);//即为sqrt(2)*max int dx=(maxBorder-src.cols)/2;int dy=(maxBorder-src.rows)/2;copyMakeBorder(src,dst,dy,dy,dx,dx,BORDER_CONSTANT);//旋转Point2f center((float)(dst.cols/2),(float)(dst.rows/2));Mat affine_matrix=getRotationMatrix2D(center,angle, 1.0);//求得旋转矩阵warpAffine(dst,dst,affine_matrix,dst.size());//计算图像旋转之后包含图像的最大的矩形float sinVal=abs(sin(radian));float cosVal=abs(cos(radian));Size targetSize((int)(src.cols*cosVal+src.rows*sinVal),(int)(src.cols*sinVal+src.rows*cosVal));//剪掉多余边框int x=(dst.cols-targetSize.width)/2;int y=(dst.rows-targetSize.height)/2;Rect rect(x,y,targetSize.width,targetSize.height);dst=Mat(dst,rect);}七、如何修改QtCreator应用程序名称修改*.pro文件名称,以及*.pro文件内“TARGET”项的值八、常用1.对象命名用词(1)打开open(2)保存save(3)拉伸stretch(4)平滑smooth(5)锐化sharpen(6)增强enhancement(7)恢复restore(8)分割Segment2.常用openCV函数(1)直方图均衡化Void equalizeHist(InputArray src, OutputArray dst);(2)OpenCV 中获取图像或矩阵最大、最小值C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray() )C++: void minMaxLoc(const SparseMat& a, double* minVal, double* maxVal, int*minIdx=0, int*maxIdx=0 )。

QT+OpenCV2.4.12配置

QT+OpenCV2.4.12配置

在win10 x64下配置QT5.6.0 Mingw+opencv2.4.121.准备好所有工具1)qt-opensource-windows-x86-mingw492-5.6.0.exe2)opencv2.4.123)cmake-3.5.2-win32-x862 . 安装好QT之后打开qtcreator工具—>选项—>构建和运行将cmake中的qmake.exe添加到Cmake中3. 打开opencv中sources中的CMakeLists.txt,参数-DWITH_IPP=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=D:/OpenCV,这样编译好的opencv 的路径将在D:/OpenCV。

点击执行Cmake,待完成Cmake之后点击完成。

4. 点击项目,构建步骤勾上install,然后点击菜单栏构建 构建所有项目,开始编译5. 等待编译完成之后,在D:/OpenCV就是我们自己编译好的opencv。

将D:/OpenCV中的include文件夹和x86文件夹方法你想放的位置,我的位置是C:\QT_MinGw\opencv2.4.12_build\include,C:\QT_MinGw\opencv2.4.12_build\x86将C:\QT_MinGw\opencv2.4.12_build\x86\mingw\bin添加到系统变量的Path中6. 新建一个QT项目,1.在.pro文件中添加对opencv的引用,INCLUDEPATH+=C:\QT_MinGw\opencv2.4.12_build\include\C:\QT_MinGw\opencv2.4.12_build\include\opencv\C:\QT_MinGw\opencv2.4.12_build\include\opencv2LIBS+=-LC:\QT_MinGw\opencv2.4.12_build\x86\mingw\lib\libopencv_*.a2.右键项目执行qmake,在main.cpp添加测试代码#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>using namespace cv;int main(){Mat img=imread("E:/2.jpg",1);namedWindow("abc");imshow("abc",img);waitKey(0);return0;}3.构建->运行大功告成!!!。

qt中cvscalar用法

qt中cvscalar用法

qt中cvscalar用法在Qt中,CvScalar 是OpenCV库中的一个结构体,用于表示包含多个通道的颜色或灰度值。

通常,它用于处理图像中的像素值。

在Qt中,你可以使用CvScalar 来表示颜色或灰度值,并进行一些图像处理的操作。

以下是一个简单的使用示例,假设你已经安装了OpenCV并将其集成到Qt项目中:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>int main() {// 创建一个CvScalar对象表示灰度值CvScalar grayValue = cvScalar(128);// 创建一个CvScalar对象表示颜色,例如BGR颜色CvScalar colorValue = cvScalar(0, 255, 0); // 绿色// 在Qt中显示颜色值qDebug() << "Gray Value: " << grayValue.val[0];qDebug() << "BGR Color Values: " << colorValue.val[0] << ", " << colorValue.val[1] << ", " << colorValue.val[2];// 使用OpenCV读取图像cv::Mat image = cv::imread("path/to/your/image.jpg");// 操作图像像素,例如将第一行第一列的像素设置为红色image.at<cv::Vec3b>(0, 0) = cv::Vec3b(0, 0, 255); // BGR颜色,这里是红色// 在Qt中显示图像cv::imshow("Image", image);cv::waitKey(0);return 0;}上述示例中,cvScalar 用于表示灰度值和颜色值,而 cv::Mat 用于表示图像。

QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置

QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置

由于项目开发的原因,需要配置QT creator+OpenCV2.4.2+MinGW开发环境,现对配置方法做如下总结:1. 下载必备软件∙QT SDK for Open Source C++ development on Windows(在google上搜索一下官方网站即可找到)∙OpenCV 2.4.2:目前最新的OpenCV版本,安装之后的目录下面有源码和个版本的lib和dll,不过为避免出现问题,还是自己编译吧。

/projects/opencvlibrary/files/opencv-win∙Cmake 2.8.9Google一下即可查到下载链接。

2. 安装软件安装QT SDK:安装的时候会弹出一个错误的提示窗口,一直没弄明白,直接忽略过去了,好像也没有什么影响。

需要注意的是:QT新建工程的时候选择桌面开发选项,而不是塞班开发选项。

建完工程后,在【项目】那编译器选择:MinGW4.4。

另外,重新编译OpenCV要使用MinGW4.4编译。

把“<Qt_directory>\mingw\bin”添加到环境变量PATH中。

注意,<Qt_directory>为安装后的QT目录所在路径,环境变量名需设为path,如果变量值已有其他路径,可以在路径后面加上英文的分号(;),然后可以添加新的路径,如E:\software\QT\mingw\bin。

如果没有正确地将“<Qt_directory>\mingw\bin”添加到环境变量PATH中,则在下面用Cmake编译OpenCV源码时会出错。

3. 编译OpenCV主要参考下面英文文章:Steps to build OpenCV 2.3.1 with Qt and MinGW:1. Install Qt SDK with the C++ compiler option (MinGW). You can download it here.2. Add “D:\QtSDK\mingw\bin” to the system PATH.3. Download and install CMake (2.8.5).4. Download and install OpenCV2.3.1 (OpenCV-2.3.1-win-superpack.exe).5. Run CMake GUI.6. Set the s ource code: “D:\OpenCV2.3.1_src"7. Set where to build binaries to: “D:\OpenCV2.3.1_out”.8. Press Configure9. Let CMake create the new folder.10. Specify the generator: MinGW Makefiles.11. Select “Specify Native Compilers” and click Next.12. For C set: “D:\QtSDK\mingw\bin\gcc.exe”13. For C++ set: “D:\QtSDK\mingw\bin\g++.exe”14. Click Finish15. In the configuration screen type in “DEBUG” (or “RELEASE” if you want to builda release version) for CMAKE_BUILD_TYPE. Check BUILD_EXAMPLES if you want. Check WITH_QT.16. Click configure again.17. The configure screen will make you specify the "CUDA_TOOLKIT_ROOT_DIR" path.set CUDA_TOOLKIT_ROOT_DIR to : "D:/QtSDK/Desktop/Qt/4.7.3/mingw/bin"18. Click configure again. Click generate. Close CMake.19. Go to "D:\OpenCV2.3.1_out" DIR and type “mingw32-make” and hit enter (this might take some time).运行图20. Then type “mingw32-make install” and hit enter again.21. Work done================================================== ===Use:Add :INCLUDEPATH+=D:/OpenCV2.3.1/includeLIBS+=D:/OpenCV2.3.1/bin/*.dllOrINCLUDEPATH+=E:\OpenCV-2.3.1\MinGW\install\includeLIBS+=D:\OpenCV2.3.1\lib\libopencv_core231d.dll.a\D:\OpenCV2.3.1\lib\libopencv_highgui231d.dll.a\D:\OpenCV2.3.1\lib\libopencv_imgproc231d.dll.a\D:\OpenCV2.3.1\lib\libopencv_ml231.dll.ato Qt's "pro" file, then you can work on.等待编译,结束后需要的东西都在install文件夹里面了。

win7 64下配置opencv2.4.9的Qt开发环境

win7 64下配置opencv2.4.9的Qt开发环境

参考以下博客:/qiurisuixiang/article/details/8665278/win7下配置OpenCV的Qt开发环境1、前言编译、配置OpenCV的工程相当曲折,一开始还以为是自己的配置、编译步骤有问题,后来发现原来是自己电脑装的Qt Creator版本有点低,里面的MingW版本较低,而OpenCV下载的是最新版本,最新版本的OpenCV需要高版本的MingW。

最后换成版本Qt Creator2.4.1,终于编译成功。

2、下载所需工具(1)Qt Creator、Qtsdk下载地址qt-creator-win-opensource-2.4.1.exeqt-win-opensource-4.8.5-mingw.exe(2)OpenCV 下载地址/(不建议下载最新版本,最新版本的编译需要高版本的MinGW,不然在执行mingw32-make命令会报错,我使用的是opencv-2.4.9-windows.exe。

(3)CMake 下载地址:/cmake/resources/software.html我使用的是cmake-3.7.1-win64-x643、安装Qt Creator及Qt4.8.5过程很简单,一直下一步就OK。

我安装到了:D:\Qt\qtcreator-2.4.1D:\Qt\4.8.5设置Qt Creator及Qt4.8.5的环境变量,具体见:《qt4.8.5+qtcreat2.4.1环境变量设置(windows)-20170113》4、安装OpenCV设置解压路径就OK。

我解压到了D:\opencv5、安装cmake过程同样很简单(注意:(1)安装路径不能有中文和空格(2)解压出来就可以)6、使用CMake重新编译OpenCV配置源码路径与生成的目标路径:(1)源码路径:即解压OpenCV包的路径。

要选择OpenCV安装目录下含有如下文件的文件夹:D:\opencv\sources(2)目标路径:可以随意设置,我设置为:E:\opencv(3)点击Configure配置按钮在弹出的对话框中选择MinGW makefiles,其余选项保持默认,点击Finish 按钮,开始编译(4)CMake编译结束界面如下图,勾选上生成列表中的WITH_OPENGL和WITH_QT两项,其他项最好不要改动。

Qt中使用opencv中得cvSetMouseCallback回调函数

Qt中使用opencv中得cvSetMouseCallback回调函数

Qt中使用opencv中得cvSetMouseCallback回调函数在Qt中使用OpenCV的cvSetMouseCallback回调函数实际上是将OpenCV的图像窗口嵌入到Qt的窗口中。

借助Qt的QLabel类来实现这一功能。

首先,我们需要在Qt中创建一个新的窗口,可以使用QWidget或QMainWindow类实现。

然后,我们再创建一个QLabel对象,作为显示OpenCV图像的区域。

现在,我们需要在窗口中嵌入OpenCV的图像窗口。

可以通过继承QLabel类,然后重写paintEvent函数来实现。

paintEvent函数将调用OpenCV的cvSetMouseCallback回调函数。

下面是一个简单的示例代码,不包括图像加载和鼠标事件处理的具体逻辑:```cpp#include <opencv2/opencv.hpp>#include <QMainWindow>#include <QLabel>#include <QPainter>class CvQLabel : public QLabelQ_OBJECTpublic:explicit CvQLabel(QWidget *parent = nullptr): QLabel(parent)//设置鼠标跟踪,保证鼠标事件可以被捕获setMouseTracking(true);}void paintEvent(QPaintEvent *event) overrideQLabel::paintEvent(event);// 获取OpenCV的图像数据cv::Mat cvImage = ...; // 从一些地方获取图像数据// 将OpenCV图像数据转换为Qt的图像数据QImage qtImage(cvImage.data, cvImage.cols, cvImage.rows, cvImage.step, QImage::Format_RGB888);QPainter painter(this);painter.drawImage(0, 0, qtImage);}void mousePressEvent(QMouseEvent *event) override//处理鼠标按下事件int x = event->x(;int y = event->y(;//处理鼠标事件}};class MainWindow : public QMainWindowQ_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr): QMainWindow(parent)//创建一个新窗口QWidget* centralWidget = new QWidget(this); setCentralWidget(centralWidget);// 创建OpenCV图像显示区域CvQLabel* imageLabel = new CvQLabel(centralWidget); // 设置QGridLayout用于放置图像和其它组件QGridLayout* layout = new QGridLayout(centralWidget); layout->addWidget(imageLabel, 0, 0);//设置窗口大小resize(800, 600);}};```在上述代码中,我们将OpenCV的图像数据转换为Qt的图像数据,然后使用QPainter对象将图像显示在QLabel上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Qt Creator中使用Opencv 2.3
分类:数字图像处理Qt2012-04-18 17:21 104人阅读评论(0) 收藏举报打开Qt项目中的.pro文件,添加如下代码
INCLUDEPATH+=D:\OpenCV\opencv\build\include\opencv2\
D:\OpenCV\opencv\build\include\opencv\
D:\OpenCV\opencv\build\include
CONFIG(release,debug|release)
{
LIBS+=D:\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_contrib231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_core231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_flann231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_gpu231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_legacy231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ml231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_objdetect231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ts231.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_video231.lib
}
CONFIG(debug,debug|release)
{
LIBS+=D:\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_contrib231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_core231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_flann231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_gpu231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_legacy231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ml231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_objdetect231d.lib\ D:\OpenCV\opencv\build\x86\vc10\lib\opencv_ts231d.lib\
D:\OpenCV\opencv\build\x86\vc10\lib\opencv_video231d.lib
}
注意,你的代码中的路径要根据OpenCV的具体安装路径做改变。

测试程序
#include<QtCore/QCoreApplication>
#include<opencv.hpp>
usingnamespace std;
usingnamespace cv;
int main(int argc,char*argv[])
{
QCoreApplication a(argc,argv);
constchar*imagename="E:\\library\\Pictures\\lena.jpg";
//从文件中读入图像
Matimg=imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr,"Cannotloadimage%s\n",imagename);
waitKey();
return-1;
}
//显示图像
imshow("image",img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return a.exec();
}。

相关文档
最新文档