在QtCreator中使用Opencv2
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是计算机视觉中常用的专用库,支持多语言和跨平台操作。
其在Python中的使用方法如下:
1. 导入OpenCV模块:使用`import cv2`命令。
2. 加载图片:使用`cv2.imread()`函数读取图片。
参数为1时表示加载彩色图片,参数为0时表示加载黑白图片。
3. 查看图片形状和分辨率:使用`shape`子函数输出图片的形状。
4. 显示图片:使用`cv2.imshow()`函数显示图片,参数分别为图片名称和图片对象。
OpenCV还可以用于操作摄像头、调节参数和录制视频等操作。
如果你想要了解更多关于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的程序,虽然重点在算法上,但图像窗⼝只能靠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⽂件,头⽂件、源⽂件、界⾯⽂件组成,今后我们都将⽤到。
opencv 2 计算机视觉编程手册
一、计算机视觉概述计算机视觉(Computer Vision)是一门涉及人工智能、机器学习和图像处理等多个领域的交叉学科,其主要研究内容是如何使计算机“看”和“理解”图像或视瓶。
计算机视觉的应用领域广泛,涵盖了人脸识别、目标检测、图像分割、三维重建等诸多方面。
而OpenCV (Open Source Computer Vision Library)是一个流行的开源计算机视觉库,为开发者提供了丰富的工具和算法,用于解决各种计算机视觉问题。
二、 Opencv 2 计算机视觉编程手册概述《Opencv 2 计算机视觉编程手册》是一本系统全面介绍OpenCV 2的计算机视觉编程技术的畅销书籍。
该书由计算机视觉领域的专家撰写,共分为多个章节,涵盖了OpenCV 2的基础知识、图像处理、特征检测、目标跟踪等内容。
本书以案例分析为主线,通过大量实例讲解了OpenCV 2在图像处理和计算机视觉领域的应用,并结合了实际项目经验,使读者能够深入了解OpenCV 2的原理和应用。
三、 Opencv 2 计算机视觉编程手册内容简介《Opencv 2 计算机视觉编程手册》全书分为十二章,每章主要内容如下:第一章:介绍OpenCV 2的基本概念和架构,包括图像的加载、保存和显示等操作。
第二章:讲解图像的基本操作,如灰度转换、图像平滑和边缘检测等。
第三章:介绍OpenCV 2中的特征检测和描述算法,包括Harris角点检测和SIFT特征描述等。
第四章:详细介绍目标检测和目标跟踪的技术和算法,包括Haar特征分类器和卡尔曼滤波器等。
第五章:讨论了图像分割和轮廓检测的方法和应用。
第六章:介绍了OpenCV 2中的人脸识别和人脸检测技术,包括基于特征点的人脸识别和基于深度学习的人脸检测等。
第七章:详细解释了OpenCV 2中的运动估计和图像配准的算法和实践。
第八章:讲解了OpenCV 2中的摄像头标定和立体视觉的原理和应用。
第九章:介绍了OpenCV 2中的图像处理和计算机视觉技术在实际项目中的应用示例。
基于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添加库文件和头文件目录(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相信会编程的朋友都知道该怎么做了,我就不赘述了。
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下(这几个是必须的,其他的可以删掉)。
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计算机视觉编程手册]在计算机视觉的领域中,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使用手册
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()更多功能:- **图像处理和分析:** 包括滤波、边缘检测、形状分析等。
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即可。
opencv 2 计算机视觉编程手册
opencv 2 计算机视觉编程手册摘要:1.OpenCV 简介2.OpenCV2 计算机视觉编程手册的内容3.手册的特点和适用对象4.手册的内容安排5.案例与实践正文:OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,用于开发各种计算机视觉和机器视觉应用程序。
它包含了大量的图像处理、分割和识别等算法,适用于各种场景。
对于那些想要学习OpenCV 的人来说,《OpenCV2 计算机视觉编程手册》是一个很好的资源。
《OpenCV2 计算机视觉编程手册》以案例的形式介绍OpenCV2.x 的新特性和C++新接口。
手册内容涵盖了OpenCV 的核心功能,如底层数据结构和算法函数,以及图像读写、用户界面操作等。
手册的特点在于很好地平衡了基础知识与进阶内容,要求读者具有基础的C++知识。
因此,该手册既适合想要学习计算机视觉的C++初学者,也适合专业的软件开发人员。
手册的内容安排如下:首先,介绍OpenCV 的基本概念和安装方法;然后,分别讲解OpenCV 的各个模块,如core、highgui、features2d、calib3d 和video 等;最后,通过实际案例和练习,帮助读者巩固所学知识。
通过学习《OpenCV2 计算机视觉编程手册》,读者可以掌握OpenCV 的基本用法和进阶技巧。
此外,手册还提供了最佳实践和建议,以便读者能够确定如何在开发环境中设置OpenCV 以及如何使用各种算法。
总之,《OpenCV2 计算机视觉编程手册》是一本实用性很强的教程,既可以作为高等院校计算机视觉课程的辅助教材,也可以作为图像处理和计算机视觉领域研究人员的参考手册。
linux +qt4.7+opencv2.2移植到tq2440开发板
linux +qt4.7+opencv2.2移植到tq2440开发板以下操作在Fedora下使用超级用户进行我已经安装了交叉编译器arm-linux-gcc 4.3.3和qt4.5的x86和arm版本在目录/opt/EmbedSky下。
修改配置文件/etc/profile 添加pathmunge /opt/EmbedSky/4.3.3/bin安装CMakeOpenCV 2.1的版本,必须使用CMake创建Makefile。
我使用的CMake版本是2.6-Linux-i386的,是fedora 通过软件添加和载卸功能添加的(这个cmake要重新安装,而且要添加bin进去路径)编译OpenCV:1、解压OpenCV 2.1到/opt/EmbedSky/OpenCV-2.1.0目录下2、在超级用户下,运行cmake-gui命令选择源代码目录:/opt/EmbedSky/OpenCV-2.1.0选择Build目录:/home/pww71/opencv-arm/点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next Operating System填写arm-inuxC Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-gccC++ Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-g++程序库的Target Root填写/opt/EmbedSky/4.3.3/,然后点击Finish修改默认配置,X86-opencv的cmake配置添加BUILD_EXAMPLES 和OPENCV_BUILD_3RDPARTY_LIBS 前面的日志已经介绍过了arm-opencv的cmake配置不要加BUILD_EXAMPLES 和OPENCV_BUILD_3RDPARTY_LIBS 和去掉WITH_TIFFCMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrtx86的opencv默认安装目录为/usr/local,对于arm的交叉编译的库来说并不合适,所以把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/没有安装tiff图像的支持,去掉WITH_TIFF点击Generate生成Makefile3、使用超级用户进入目录/home/pww71/opencv-arm,运行make编译opencv4、运行make install,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/QT的配置已经解压和安装了qt4.5的x86的库和arm交叉交叉编译的库安装qtcreator时记得安装地址并且修改配置文件/etc/profile 添加上qtcreator的安装地址的bin目录我的是pathmunge pathmunge /opt/EmbedSky/qtcreator-1.3.0/bin为了能找到qmake 还要添加路径pathmunge /opt/EmbedSky/qt-4.5/_install/x86/binpathmunge /opt/EmbedSky/qt-4.5/_install/am/bin到配置文件/etc/profile中使用超级用户输入命令source /etc/profile 后再执行qtcreator命令打开Qtcreator界面进入Tools-Options左侧选择QT4-Qt Versions 右侧选项里:如果通过软件添加和载卸工具添加了qt4的话Auto-detected会自动的选择Qt in PATH /usr/local/bin/qmake-qt4 用这个qmake工具生成的可执行文件不用添加-qws命令行参数自己安装的qt4.5 我是如下配置Qt in PATH /opt/EmbedSky/qt-4.5/_install/arm/bin/qmake添加Manual x86-qt-4.5.0 /opt/EmbedSky/qt-4.5/_install/x86/bin/qmake生成的可执行文件需要添加-qws命令行参数分别点击rebuild 最后点击okBuild Settings 中根据需要Add刚才配置的选择BUild configuration for ... 也选择相应的选项在QT工程文件.Pro中添加以下内容INCLUDEPATH += /usr/local/include/opencvLIBS += /usr/local/lib/libcv.so \/usr/local/lib/libcvaux.so \/usr/local/lib/libcxcore.so \/usr/local/lib/libhighgui.so \/usr/local/lib/libml.sopc仿真必须将以上库还要添加到项目文件夹里如果是arm开发板的程序则添加以下内容INCLUDEPATH += /usr/local/arm/lib/opencv/include/opencvLIBS += /usr/local/arm/lib/opencv/lib/libcv.so \/usr/local/arm/lib/opencv/lib/libcvaux.so \/usr/local/arm/lib/opencv/lib/libcxcore.so \/usr/local/arm/lib/opencv/lib/libhighgui.so \/usr/local/arm/lib/opencv/lib/libml.so编译生成可执行文件移植到开发板提示缺少什么库就按提示添加相应的图像库到lib中以及qt4.5的库和字体都添加到相应的目录中中间有一个这个提示QWSDisplay::Data::init: Invalid argumentClient can't attach to main ram memory.Aborted这个是表示缺少命令行参数-qws是Qt4的问题运行命令添加该参数ok一切正常注意的是qtcreator。
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 用于表示图像。
OpenCV在Qt中显示视频的两种方法
OpenCV在Qt中显⽰视频的两种⽅法代码如下:注意,要在ui界⾯上放置⼀个“Vertical Layout”控件,调整到合适⼤⼩[cpp] view plain copy1. #include <QtWidgets/QMainWindow>2. #include <QPaintEvent>3. #include <QTimer>4. #include <QPainter>5. #include <QPixmap>6. #include <QLabel>7. #include <QImage>8. #include <opencv.hpp>9. #include "ui_mainwindow.h"10. using namespace cv;11. class mainwindow : public QMainWindow12. {13. Q_OBJECT14.15. public:16. mainwindow(QWidget *parent = 0);17. ~mainwindow();18. public slots:19. void updateImage();20. private:21.22. QTimer theTimer;23. Mat srcImage;24. VideoCapture videoCap;25. QLabel *imageLabel;26.27. Ui::mainwindowClass ui;28.29. protected:30. void paintEvent(QPaintEvent *e);31. };[cpp] view plain copy1. mainwindow::mainwindow(QWidget *parent)2. : QMainWindow(parent)3. {4. ui.setupUi(this);5. connect(&theTimer, &QTimer::timeout, this, &mainwindow::updateImage);6. //从摄像头捕获视频7. if(videoCap.open(0))8. {9. srcImage = Mat::zeros(videoCap.get(CV_CAP_PROP_FRAME_HEIGHT), videoCap.get(CV_CAP_PROP_FRAME_WIDTH), CV_8UC3);10. theTimer.start(33);11. }12. //设置显⽰视频⽤的Label13. imageLabel = new QLabel(this);14. ui.verticalLayout->addWidget(imageLabel);15. }16.17. mainwindow::~mainwindow()18. {19.20. }21.22. void mainwindow::paintEvent(QPaintEvent *e)23. {24. //显⽰⽅法⼀25. QPainter painter(this);26. QImage image1 = QImage((uchar*)(srcImage.data), srcImage.cols, srcImage.rows, QImage::Format_RGB888);27. painter.drawImage(QPoint(20,20), image1);27. painter.drawImage(QPoint(20,20), image1);28. //显⽰⽅法⼆29. QImage image2 = QImage((uchar*)(srcImage.data), srcImage.cols, srcImage.rows, QImage::Format_RGB888);30. imageLabel->setPixmap(QPixmap::fromImage(image2));31. imageLabel->resize(image2.size());32. imageLabel->show();33. }34.35. void mainwindow::updateImage()36. {37. videoCap>>srcImage;38. if(srcImage.data)39. {40. cvtColor(srcImage, srcImage, CV_BGR2RGB);//Qt中⽀持的是RGB图像, OpenCV中⽀持的是BGR41. this->update(); //发送刷新消息42. }43. }演⽰结果。
嵌入式opencv-2.0.0移植
嵌入式opencv-2.0.0,Qt-4.6.3移植一、移植环境操作系统:ubuntu 14.04交叉编译器:arm-linux-gcc-4.4.3二、移植过程在opencv移植之前我们需要解决opencv的一些模块的依赖关系,目前我们需要的模块的依赖关系由以下几个包提供:jpegsrc.v6b.tar.gz (jpeg函数库)libpng-1.2.18.tar.gz (png函数库库)zlib-1.2.3.tar.gz (z函数库)x264-snapshot-20100410-2245.tar.bz2 (x264函数库)yasm-0.7.2.tar.gz (汇编编译器,编译x264时需要用到)xvidcore-1.3.2.tar.gz (xvid函数库)ffmpeg-0.5.3.tar.bz2 (ffmpeg源码包)O penCV-2.0.0.tar.bz2 (OpenCV源码包)这些包的安装是有顺序的,请按照以下顺序安装。
1、安装交叉编译工具#tar zxvf arm-linux-gcc-4.4.3.tar.gz -C/root/添加环境变量#vim /root/.bashrc在路径中添加/opt/toolschnia/4.4.3/bin与已有的路径用冒号隔开刷新环境变量:#source /root/.bashrc2、交叉编译libz#tar zxvf zlib-1.2.3.tar.gz#cd zlib-1.2.3#CC=arm-linux-gcc ./configure --prefix=/root/arm/4.4.3/arm-none-linux-gnueabi –shared#make#make install3、交叉编译libjpeg#tar –zvxf jpegsrc.v6b.tar.gz#cdjpeg-6b#./configure--prefix=/root/arm/4.3.2/arm-none-linux-gnueabi --enable-shared --enable-static修改生成的Makefile文件CC=gcc改为CC=arm-linux-gcAR=ar rc改为AR=arm-linux-ar rcAR2=ranlib改为AR2=arm-linux-ranlib#make需在/opt/toolschnia/4.4.3/arm-none-linux-guneabi目录下创建/man/man1目录,才能执行安装命令。
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两项,其他项最好不要改动。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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>
using namespace std;
using namespace cv;
int main(int argc,char*argv[])
{
QCoreApplication a(argc,argv);
const char*imagename="E:\\library\\Pictures\\lena.jpg";
//从文件中读入图像
Mat img=imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr,"Can not load image%s\n",imagename);
waitKey();
return-1;
}
//显示图像
imshow("image",img);
//此函数等待按键,按键盘任意键就返回
waitKey();
return a.exec();
}。