opencvVS使用说明

合集下载

opencv基本使用方法

opencv基本使用方法

OpenCV基本使用方法一、介绍O p en CV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法,可以用于图像处理、目标检测、人脸识别等各种应用。

本文档将介绍O pe nC V的基本使用方法,包括图像读取、显示、保存以及常用的图像处理操作。

二、图像读取与显示1.读取图像要读取图像,可以使用`cv2.im re ad()`函数。

该函数接受图像文件的路径作为参数,并返回一个表示图像的多维数组。

i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")2.显示图像要显示图像,可以使用`cv2.im sh ow()`函数。

该函数接受一个窗口名称和一个表示图像的多维数组作为参数。

i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")c v2.im sh ow("Im age",i ma ge)c v2.wa it Ke y(0)c v2.de st ro yA ll Wind ow s()三、图像保存与格式转换1.保存图像要保存图像,可以使用`cv2.im wr it e()`函数。

该函数接受图像保存的路径和表示图像的多维数组作为参数。

i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")c v2.im wr it e("n ew_i ma ge.j pg",im age)2.格式转换要将图像从一种格式转换为另一种格式,可以使用`c v2.c vt Co lo r()`函数。

该函数接受表示图像的多维数组和转换的标志作为参数。

i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")g r ay_i ma ge=c v2.cv t Co lo r(im ag e,cv2.CO LO R_BG R2GR AY)四、常用的图像处理操作1.转换为灰度图要将彩色图像转换为灰度图,可以使用`c v2.cv tC ol or()`函数,并指定转换标志为`cv2.CO LO R_BG R2GR AY`。

Win7下如何用VS2012配置opencv3.0

Win7下如何用VS2012配置opencv3.0

Win7下如何用VS2012配置opencv3.0.0一、下载在opencv官网:/下载OpenCV for Windows,opencv3.0.0版本。

二、解压下载完后得到文件OpenCV3.0.0,双击可以解压到到D盘根目录,然后点击Extract按钮,解压出了一个大小为2.59GB的opencv文件夹,其下有build和sources两个文件夹。

三、环境变量配置在桌面上右击“计算机”属性—高级系统设置—环境变量,在系统变量上点击“新建”变量名填写PATH变量值填写D:\opencv\build\x86\vc11\bin注意:上面vc11对应的VS2012版本,vc12对应的vs2013版本四、打开VS2012新建项目打开VS2012,在VS2012中新建一个控制台项目,文件->新建->项目->Visual C++->Win32控制台项目,输入名称,例如test,选择一个存放项目的文件夹,点击下一步,在空项目上打勾,点击完成。

五、VS2012包含目录、库目录配置先在源文件下建立一个.cpp源文件,取名为main.cpp调出属性管理器:点击视图—其他窗口—属性管理器打开属性管理器,可以看到一个属性管理器的窗口,接下来点开工程文件test,下边会有一个Debug|Win32的文件夹,点击打开,下有名为er的文件,右击属性打开属性页,选择通用属性下的VC++目录,右边会有包含目录和库目录,点击包含目录,添加以下三条路径,一个一个的添加,其实这些都是刚才OpenCV相关解压文件所在的目录:D:\opencv\build\includeD:\opencv\build\include\opencvD:\opencv\build\include\opencv2再点击库目录添加下面其中一条路径:64位:D:\opencv\build\x64\vc11\lib(编译64位软件时)32位:D:\opencv\build\x86\vc11\lib(编译32位软件时)点击链接器,选择输入,会在右侧看到附加依赖项,添加下面两个文件,其实在D:\opencv\build\x86\vc11\lib里面,这里添加的是Debug模式,会看到文件的结尾有dopencv_ts300d.libopencv_world300d.lib假如要添加Release模式,将d去掉即可Release模式:opencv_ts300.libopencv_world300.lib六、显示图片配置已经在上面的过程中结束了,下面让我们来显示一张图片,验证一下是配置是否成功。

VS2008与OpenCV配置教程

VS2008与OpenCV配置教程

vs2008 + OpenCV-2.1.0-win32-vs2008安装vs2008 + OpenCV- 2.1.0-win32-vs2008安装1. 安装vs2008+sp12. 安装opencv-2.1.0-win32-vs2008,假设安装目录为c:\opencv2.1。

安装过程中注意选择添加环境变量,把“add it to your Current User PATH “前的复选框勾上.3. 为vs2008配置openvc,过程如下:工具->选项->项目和解决方案->vc++目录,“显示一下内容的目录”下拉列表中选择“包含文件”,添加条目“C:\OpenCV2.1\include\opencv”;“显示一下内容的目录”下拉列表中选择“库文件”,添加条目“C:\OpenCV2.1\lib”;"显示一下内容的目录"下拉列表选择“源文件”,添加条目”C:\OpenCV2.1\src\cv”,”C:\OpenCV2.1\src\cvaux”,”C:\OpenCV2.1\src\cxcore”,”C:\OpenCV2.1\src\highgui”。

点击“确定”。

4. 为单个工程配置运行环境,如:(1) 新建一个win32命令控制台项目opencvhello(2) 在解决方案资源管理器中右键点击项目名称opencvhello,选择“属性”,在“配置(C)”下拉列表中选择Debug, 然后“配置属性”->“链接器”->“输入”->附加依赖项,添加cxcore210d.libcv210d.libhighgui210d.lib在“配置(C)”下拉列表中选择Release, 然后“配置属性”->“链接器”->“输入”->附加依赖项,添加cxcore210d.libcv210d.libhighgui210d.lib中间如果提示要保存的话,就保存。

VS 2010在MFC中用opencv实现对视频中动态目标的追踪

VS 2010在MFC中用opencv实现对视频中动态目标的追踪

Visual Studio2010在MFC中用opencv实现对视频中动态目标的追踪第二步,建立一个MFC的对话框程序,做两个按钮,一个“打开视频文件”,一个“运动跟踪处理”。

具体操作:1 建立MFC对话框程序的框架:File ->New -> MFC AppWizard(exe),选取工程路径,并取工程名“VideoProcesssing”-> Next -> 选择Dialog based后,去掉使用Unicode库的勾,选择在静态库中使用 MFC,点Finish,点OK.2 添加按钮:直接Delete掉界面默认的两个“确定”“取消”按钮。

然后添加两个button,分别名为“打开视频”,“运动跟踪处理”,其ID分别设为IDC_OPEN_VIDEO,IDC_TRACKING.3 添加消息响应函数:双击按钮“打开视频文件”,自动生成响应函数名OnOpenVideo,点Ok。

然后添加如下代码:CFileDialog dlg(true,"*.avi",NULL,NULL,"*.avi|*.avi||");if (dlg.DoModal()==IDOK){strAviFilePath = dlg.GetPathName();}else{return;}同样,双击“运动跟踪处理”按钮,选择默认的响应函数名,然后添加代码://声明IplImage指针IplImage* pFrame = NULL;IplImage* pFrImg = NULL;IplImage* pBkImg = NULL;CvMat* pFrameMat = NULL;CvMat* pFrMat = NULL;CvMat* pBkMat = NULL;CvCapture* pCapture = NULL;int nFrmNum = 0;//打开AVI视频文件if(strAviFilePath=="") //判断文件路径是否为空{MessageBox("请先选择AVI视频文件!");return;}else{if(!(pCapture = cvCaptureFromFile(strAviFilePath))) {MessageBox("打开AVI视频文件失败!");return;}}//创建窗口cvNamedWindow("Video", 1);cvNamedWindow("Background",1);cvNamedWindow("Foreground",1);//使窗口有序排列,窗口宽330cvMoveWindow("Video", 30, 0);cvMoveWindow("Background", 360, 0);cvMoveWindow("Foreground", 690, 0);//逐帧读取视频while(pFrame = cvQueryFrame( pCapture )){nFrmNum++;//如果是第一帧,需要申请内存,并初始化if(nFrmNum == 1){pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1); // 存放背景图像(灰度)pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1); // 存放中间图像(灰度)pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);//转化成单通道图像再处理(灰度)cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);cvConvert(pFrImg, pFrameMat);cvConvert(pFrImg, pFrMat);cvConvert(pFrImg, pBkMat);}else{cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY); //转化成单通道图像再处理(灰度)cvConvert(pFrImg, pFrameMat);//高斯滤波先,以平滑图像//cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 0, 0);//当前帧跟背景图相减(求背景差并取绝对值)cvAbsDiff(pFrameMat, pBkMat, pFrMat);//二值化前景图(这里采用特定阈值进行二值化)cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);//进行形态学滤波,去掉噪音cvErode(pFrImg, pFrImg, 0, 1);cvDilate(pFrImg, pFrImg, 0, 1);//滑动平均更新背景(求平均)cvRunningAvg(pFrameMat, pBkMat, 0.003, 0);//将背景转化为图像格式,用以显示cvConvert(pBkMat, pBkImg);// 保持原图像的旋转方向pBkImg->origin = pFrImg->origin = pFrame->origin;//显示图像cvShowImage("Video", pFrame);cvShowImage("Background", pBkImg);cvShowImage("Foreground", pFrImg);//如果有按键事件,则跳出循环//此等待也为cvShowImage函数提供时间完成显示//等待时间可以根据CPU速度调整if( cvWaitKey(200) >= 0 )break;}}//销毁窗口cvDestroyWindow("Video");cvDestroyWindow("Background");cvDestroyWindow("Foreground");//释放图像和矩阵cvReleaseImage(&pFrImg);cvReleaseImage(&pBkImg);cvReleaseMat(&pFrameMat);cvReleaseMat(&pFrMat);cvReleaseMat(&pBkMat);cvReleaseCapture(&pCapture);4 选fileview选项卡中VideoProcessingDlg.h,在CVideoProcessingDlg类中添加公有类成员:CString strAviFilePath;5 选fileview选项卡中VideoProcessingDlg.cpp,添加opencv头文件#include "cv.h"#include "highgui.h"#include "cxcore.h"6 编译执行,成功!还可以添加一个”录制视频”的按钮,修改ID号为IDC_RECORD,双击“录制视频”按钮,选择默认的响应函数名,然后添加代码:CvCapture* capture=cvCaptureFromCAM(-1); //打开摄像头CvVideoWriter* video=NULL;IplImage* frame=NULL;int n;if(!capture) //如果不能打开摄像头给出警告{cout<<"Can not open the camera."<<endl;return ;}else{frame=cvQueryFrame(capture); //首先取得摄像头中的一帧video=cvCreateVideoWriter("camera.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25,cvSize(frame->width,frame->height)); //创建CvVideoWriter对象并分配空间//保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32if(video) //如果能创建CvVideoWriter对象则表明成功{cout<<"VideoWriter has created."<<endl;}cvNamedWindow("Camera Video",1); //新建一个窗口int i = 0;while(i <= 200) // 让它循环200次自动停止录取{frame=cvQueryFrame(capture); //从CvCapture中获得一帧if(!frame){cout<<"Can not get frame from the capture."<<endl;break;}n=cvWriteFrame(video,frame); //判断是否写入成功,如果返回的是1,表示写入成功cout<<n<<endl;cvShowImage("Camera Video",frame); //显示视频内容的图片i++;if(cvWaitKey(2)>0)break; //有其他键盘响应,则退出}cvReleaseVideoWriter(&video);cvReleaseCapture(&capture);cvDestroyWindow("Camera Video");}return ;第二步,建立一个编程环境,然后加载opencv的库路径等等。

使用VS+OpenCV调用深度学习模型

使用VS+OpenCV调用深度学习模型

使⽤VS+OpenCV调⽤深度学习模型最近项⽬有个任务,要在windows环境下⽤VS+OpenCV实现caffe模型的调⽤,于是在⽹上找了⼏个相关的博客跑了⼏个demo练练⼿。

这些博客写得都很详细,但是有些细节由于版本更新的问题,配置的过程中有些变化,所以⾃⼰再发篇博客记录下。

⽬前OpenCV似乎只⽀持对caffe模型的调⽤,如果⼿上有的是pytorch或者tensorflow训练好的模型的话,可以⽤其他软件转成caffemodel以及protxt⽂件。

之前尝试过⽤OpenCV3.2.0,所做的⼯作如下:前期的准备⼯作可以参考这篇博客:,关于配置环境,我⽤的VS2015,CMake是官⽹的最新版本,OpenCV选的是博客中⽤的OpenCV3.2.0。

其中需要注意的是,运⾏环境及前期准备过程中, OpenCV contrib库的版本应该与⾃⼰下载的OpenCV 库相对应,不然后续编译的过程中会报错。

同时,在编译OpenCV及contrib库的过程中,在完成第⼀次编译,找到“OPENCV_EXTRA_MODUALS_PATH”设置路径的时候,在复制完路径后记得把路径中的‘\’改成'/',不然也会报错。

接下来就是按着上⾯的博客⼀步步来。

第⼀demo很顺利地就跑通了,到第⼆个demo的最后⼀步的时候,系统总是会报错,提⽰我没有'norm_para'这个参数。

⽤博客上的⽅法发现还是跑不通,原因可能是⽹上下的caffemode时有更新,所以deploy.protxt中也会有相应的改动,在⽹上找了好久⼀直没有解决的办法,最终靠着github解决了问题:后来调⽤caffe训练的模型的时候,发现OpenCV3.2.0的dnn模块还不⽀持bn层,⽽对于很多⽹络来说,缺少了bn层,测试效果往往会下降很多。

折腾了好半天,发现OpenCV3.3.0已经新加⼊了bn层,并且将dnn提升到了正式代码块中,也就省去了前⾯提到的⽤CMake进⾏编译的过程。

VS应用环境的调试、配置和测试解析

VS应用环境的调试、配置和测试解析

开发环境的配置

注:DirectShow的配置方法和之前OpenCV的配置方法类似, 为了简洁,就不截图了。另外一点,就是在目录
F:\Program Files\DXSDK\Samples\C++\DirectShow\BaseClasses\
下是没有Debug和Release子文件夹的,需要编译一个程序 才能生成。但是由于DirectShow版本和VS版本的问题导致 这个程序的编译产生很多错误,比较难调试。所以对这个 编译工作暂时不作要求,在附件中我将把我编译好的库给 大家,只要将它们拷贝到
选择项目test1属性在弹出的test1属性页中展开左边属性列表中的配置属性链接器输入在右边的附加依赖项中填写几个库文件的名opencvcalib3d242dlibopencvcontrib242dlibopencvcore242dlibopencvfeatures2d242dlibopencvflann242dlibopencvgpu242dlibopencvhighgui242dlibopencvimgproc242dlibopencvlegacy242dlibopencvml242dlibopencvobjdetect242dlibopencvts242dlibopencvvideo242dlib注意库文件名字之间用空格隔开
第一个例子程序

该程序的效果是,从硬盘中加载指定的图 像文件,并在窗口中显示出来。如下图所 示:
第一个例子程序
第二个例子程序

下面将通过第二个简单的例子程序,介绍 如何编写基于对话框的MFC程序。
(1)打开VS2008编程环境。选择“文件”->“新建”->“项 目”,在弹出的“新建项目”对话框中,展开左侧树形列 表“项目类型”->“Visual C++”->“MFC”,在右侧的“Visual Studio 已安装的模板”栏中选择“MFC 应用程序”。填写 项目名称,这里为Test2。点击“确定”按钮;见下图:

vs2010与opencv配置过程

vs2010与opencv配置过程

Vs2010与Opencv 配置过程一.我的opencv是安装在D盘的以下内容是按照D盘安装的步骤:1 设置环境变量:我的电脑--->右键--->属性--->高级--->环境变量--->在用户变量里,(系统环境变量和用户环境变量里面都要添加这两个位置)新建PATH和TBB两个项步骤1:在PATH中添加D:\vs2010\opencv\build\x86\vc10\bin,步骤2:添加TBB的环境变量D:\vs2010\opencv\build\common\tbb\ia32\vc10如图所示:2.步骤3 打开一个Opencv的工程,点菜单目录的“视图”--->属性管理器--->双击项目名称步骤3:在配置属性—>通用属性--->VC++目录--->包含目录文件中添加D:\vs2010\opencv \build\includeD:\vs2010\opencv \build\include\opencvD:\vs2010\opencv \build\include\opencv23::在配置属性页—>通用属性--->VC++目录--->库目录中添加:D:\vs2010\opencv \build\x86\vc10\lib如图所示:步骤5 添加lib库文件, 在配置debug里--->项目属性--->链接器--->输入--->附加依赖库里加上opencv_core242d.libopencv_highgui242d.libopencv_video242d.libopencv_ml242d.libopencv_legacy242d.libopencv_imgproc242d.lib步骤6:在配置release里--->项目属性--->链接器--->输入--->附加依赖库里加上opencv_core242.libopencv_highgui242.libopencv_video242.libopencv_ml242.libopencv_legacy242.libopencv_imgproc242.lib测试小代码如下://在(show_image)窗口下读取图片(名为opencv)// opencv2_4_2test.cpp : 定义控制台应用程序的入口点。

vs使用小技巧

vs使用小技巧

vs使用小技巧VS软件是一款非常实用的文本编辑软件,不仅功能强大,而且简单易用。

以下是一些VS使用的小技巧希望能对大家有所帮助。

1. 快速打开文件:通过按下Ctrl + Alt + O组合键,可以直接打开文件。

这一功能可以在任何时间快速打开需要编辑或查看的文件,极大提高了工作效率。

2. 列编辑模式:按下Alt组合键,然后选择需要编辑的文本块,可以进入列编辑模式。

在这个模式下,对选中的文本块进行编辑操作,可以同时修改多行文本相同或相似的内容。

3. 多光标编辑:按住Ctrl + Alt组合键,然后使用鼠标左键点击文本的多个位置,可以创建多个光标。

这样可以同时在多个光标位置进行编辑,非常方便。

4. 变量重命名:在要重命名的变量上按下F2键,然后输入新的变量名,可以自动修改所有使用该变量的地方。

这样可以快速修改变量名,而不用逐一搜索修改。

5. 代码折叠:在编辑代码时,按下Ctrl + M + O组合键可以折叠所有代码块,按下Ctrl + M + P组合键可以展开所有代码块。

这样可以方便地隐藏和显示代码块,减少阅读时的干扰。

6. 快速切换文件:按下Ctrl + Tab组合键可以在打开的文件之间快速切换。

这个快捷键可以在多个文件之间快速切换,非常方便。

7. 查找和替换:按下Ctrl + F组合键可以打开查找功能,输入要查找的文本,可以快速定位到文本中的位置。

按下Ctrl + H组合键可以打开替换功能,可以将文本中的某一段替换成其他内容。

8. 代码自动补全:输入关键字或函数名的一部分,然后按下Ctrl + 空格组合键,可以弹出代码自动补全的菜单。

这个功能可以帮助我们快速输入命令或代码片段,减少输入错误。

9. 调试功能:VS提供了强大的调试功能,可以逐行执行代码并查看变量的值。

通过设置断点,可以方便地调试程序,并找出错误的原因。

10. 插件扩展:VS支持插件的扩展,可以根据个人需求安装一些有用的插件,来提高工作效率。

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

1.打开opencv2.4.9.exe,指定安装位置(文件解压位置),解压后包含两个文件夹build、source,build文件夹中包含静态链接库文件和动态链接库文件,source文件夹包含opencv函数的源码以及训练好的分类器以及训练好的分类器。

(1)提取build文件夹下include文件夹备用(第12步使用);
(2)提取build/x86/vc10目录下的bin文件夹、lib文件夹备用。

(说明:x86文件夹中链接库文件是VS默认win32平台
下32位编译器,如果设置VS编译平台为64位则需要x64
文件夹的链接库;vc10文件夹的链接库对应VS2010开发平
台,vc11未知,vc12对应VS2012及以上的开发平台)
图1 opencv解压得到的两个文件夹图2 build文件夹include
图3 build/x86/vc10文件夹下bin、lib分别存放动态静态链接库文件
图4 source文件夹中data文件夹中的haarlike级联分类器、hog分类器、lbp分类器,主要对人脸、五官、微笑、行人等做分类检测
2.打开VS,新建一个Win32控制台应用程序
3.点击下一步然后去掉预编译头,选择空项目
4.点击完成,找到解决方案管理器,右键工程名
5.配置属性->VC++目录
6.在可执行文件目录编辑输入../bin 然后点击确定
7.在包含目录分别输入../include ../include/opencv ../inclide/opencv2
然后点击确定
8.在库目录输入../lib
然后点击确定
9.配置属性->链接器->输入->附加依赖项
10.在附加依赖项粘贴以下内容:
然后点击确定
opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
opencv_ml249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib opencv_legacy249.lib opencv_objdetect249.lib opencv_ts249.lib opencv_video249.lib opencv_nonfree249.lib opencv_ocl249.lib opencv_photo249.lib opencv_stitching249.lib opencv_superres249.lib opencv_videostab249.lib
11.属性配置完成,点击确定,找到项目文件夹(项目属性->在文件管理器中打开文件夹),进入文件夹后返回上一级,找到后缀名为sln的文件
12.将第一步中备用的三个文件夹(include bin lib,大概
89.4MB)放在与sln文件同名文件夹目录下
13.回到VS界面在源文件中添加新项CPP文件,需要的话也可以添加头文件
14.输入代码
#include<opencv.hpp>
using namespace cv;
int main(){
Mat img = imread("1.jpg");
namedWindow("【图片显示】");
imshow("【图片显示】", img);
waitKey(0);
return 0;
}
15.选择一张图片命名为1.jpg保存到工程中cpp文件同名文件夹下
16.VS界面工具栏,调试->开始执行,或者启用快捷键“CTRL+F5”
17.若出现下面错误(opencv开头的动态链接库文件缺失),将bin 文件夹的所有文件复制到代码CPP文档同名文件夹下
这是版本兼容问题
18.若出现下面错误(MSVC开头的动态链接库文件缺失),从网上下载对应的DLL文件放到CPP同名文件夹下
19.若出现控制台提示错误,检查图片路径及代码是否正确20.若用到ASM的相关程序或libFace,缺少的lib文件或dll文件按照OpenCV的方式配置属性,同时在相应文件夹添加文件。

相关文档
最新文档