学习opencv图像处理也有一段时间了,一开始使用的是最新的版本opencv3.2.0,但在最近用opencv检测兴趣与匹配时时,发现opencv3.2.0并不支持nonfree库了(里面包含图像兴趣点检测的优秀算法:SURF,SIFT),仔细看看了原理,挺复杂的,自己写感觉不太现实,于是下载了个包含本模块的老版本的opencv2.4.13。vs配置opencv的教程网上也很多了,也为我开始学习时提供了很多帮助,本文主要解决以下问题:
1.修改VS2015安装路径的方法;
2.opencv文件中如何选择x86还是x64的问题(跟你的电脑是32位或64位的没有直接关系);
3.最新的opencv3.1.0/3.2.0版本没有nonfree所包含的函数库;
4.vs2015配置opencv的详细流程;
5.opencv各函数库的简单介绍;
6.vs2015编写简单的opencv应用实例。
opencv官网下载链接:http://opencv.org/opencv-3-2.html
VS2015官网下载链接:https://www.visualstudio.com/downloads/
注:电脑以前安装过VS2015卸载后,再次安装时发现安装路径无法选择。原因是:VS2015以前安装的组件并没有卸载干净,安装时系统自动连接到以前的安装路径。解决办法:彻底删除遗留文件(终极卸载软件:Visual Studio Uninstaller)。
VS2015安装opencv
1.下载opencv安装包:根据运行的系统选择(本系统为win10)
2.单击安装包 右键,以管理员身份运行,选择安装路径(建议现在盘符中新建一个文件夹,并以opencv版本号命名,如:opencv2.4.13),windows下其实就是一个解压的过程。
3.用户|系统变量设置。回到电脑桌面,鼠标右击“我的电脑”图标,选择属性-高级系统设置-环境变量,将出现以下界面:
3.1用户变量设置(通常情况不设置用户变量有时也能使用opencv,为保险起见,最好设置为好,特别是在使用较低版本的opencv时),具体步骤如图所示:
假如opencv安装到了C盘opencv2.4.13,则添加路径为:C:\opencv2.4.13\opencv\C:\opencv2.4.13\opencv\build\x86\vc14\bin
(有没有注意到此处选择的是…x86\vc14…,不可以用x64吗?,低版本中只有vc12,vc11…,没有vc14呀? 后面将做讲解…)
3.2系统变量设置:系统变量设置与用户变量设置显示,如图所示
4.VS2015编译连接属性设置
4.1启用VS2015,新建一个工程
4.2单击菜单栏“视图—其他窗口—属性管理器”,在弹出来的属性管理器中进行Debug属性设置。
(问题来了:这里有和Debug|x64),设置哪个呢?——根据我们第三步设置环境变量路径来确定:“…x86..”对应“Debug|win32”;“…x64…”对应“Debug|x64”。由于我添加的是“…x86…”这里我选择“Debug|win32”下的“Microsoft.Cpp.Win32.user”右击点击属性,进入图示界面:
4.1.1选择“VC++目录”在包含目录 中添加文件路径,如:
C:\opencv2.4.13\opencv\build\include
C:\opencv2.4.13\opencv\build\include\opencv
C:\opencv2.4.13\opencv\build\include\opencv2
在“库目录”下添加库文件路径,如:
C:\opencv2.4.13\opencv\build\x86\vc14\lib
4.1.2选择”连接器—输入”在“附加依赖项”中添加.lib文件,操作如图所示:
.lib文件以及相关函数功能简介如下:
opencv_ml2413d.lib
opencv_calib3d2413d.lib/包含相机标定、双视角几何估计以及立体函数/
opencv_contrib2413d.lib
opencv_core2413d.lib/包含程序库的核心功能,特别是基本的数据结构和算法函数/
opencv_features2d2413d.lib/包含特征点检测器、描述子以及特征点匹配框架/
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib/包含图像、视频读写函数和部分用户界面函数/
opencv_imgproc2413d.lib/包含了主要的图像处理函数/
opencv_legacy2413d.lib
opencv_objdetect2413d.lib/包含目标检测函数,例如面部和人体探测器/
opencv_ts2413d.lib
opencv_video2413d.lib/包含运动估计、特征跟踪以及前景提取函数和类/
opencv_nonfree2413d.lib/付费模块(专利保护),SURF、SIFT算法/
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_videostab2413d.lib
注:其他版本的opencv安装步骤与此类似,其中
vc14——VS2015
vc12——VS2013(当然这不是绝对的,可以通过其他方式配置与安装,只是比较麻烦)
这样你就可以通过opencv进行你的图像处理学习的旅程了。
测试实例:
1.图片读取(图片在工程根目录下不需要添加路径,否则需要)如;
cv::Mat image = cv::imread(“image.jpg”,1);/读取彩色图片/
cv::Mat image = cv::imread(“image.jpg”,0);/读取图片转化为灰度图片/
2.显示图片:
cv::imshow(“OriginImage.jpg”,image);
3.灰度处理:常用与图像处理的预处理,以减少计算量。
cv::cvtColor(image, picture, CV_BGR2GRAY);
4.二值化处理:
cv::threshold(picture, binary, 120, 255, cv::THRESH_BINARY);
测试结果:
实例代码:
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
int main()
{
cv::Mat picture;
cv::Mat image = cv::imread("image.jpg");
if (image.empty())
{
std::cout << "read image failure!\n";
return 0;
}
std::cout << "read image succeed!\n";
cv::namedWindow("OriginImage");
cv::imshow("OriginImage", image);
cv::cvtColor(image, picture, CV_BGR2GRAY);//灰度图片
cv::namedWindow("GreyImage");
cv::imshow("GreyImage", picture);
cv::imwrite("GreyImage.jpg", picture);
cv::Mat binary;
cv::threshold(picture, binary, 120, 255, cv::THRESH_BINARY);
cv::namedWindow("BinaryImage");
cv::imshow("BinaryImage", binary);
cv::imwrite("BinaryImage.jpg", binary);
cv::waitKey(0);
}