经验分享:Visual Studio上配置OpenCV并运行第一个图像处理程序

像一个无头苍蝇一样乱飞了一个月,总算把visual studio上的OpenCV配置成功了,并且还成功运行了两个图像处理的程序。

OpenCV配置步骤

先下载对应版本的Visual Studio与OpenCV,本人使用的是Visual Studio 2010与OpenCV 2.4.9,这种组合经本人多次测试是出差错最少的。下载链接如下:
Visual Studio 2010下载(密码:kn9b)
OpenCV 2.4.9下载(密码:uevz)

下面介绍配置VS OpenCV的步骤:

  1. 建立一个项目的解决方案
    在这里插入图片描述
    选择第一项“Win32 控制台程序”后,输入该项目解决方案的名字和存放路径,之后弹出的对话框选择确定。
    在这里插入图片描述
    弹出此对话框的时候,在附加选项里面勾选上“空项目”,之后点击完成。

这样就算成功建立了一个项目的解决方案。

2.解压OpenCV,设置环境变量
选择一个合适的路径,解压刚刚下载的OpenCV(本人解压的位置为E盘下):
在这里插入图片描述
点击其中的“Extract”按钮,进行解压。OpenCV中的库很多,解压之后文件夹很大,解压也需要一段时间。

解压完成后,可以看到E:\opencv的路径里面出现了两个文件夹build与sources:

在这里插入图片描述
接下来,就是进行环境变量的设置了。

依次打开:“此电脑”→“属性”→“高级系统设置”→“环境变量”,找到其中的环境变量PATH,对其值进行设置(用户变量和系统变量中的PATH都要设置):

在系统的PATH的环境变量里面,增加一个值,这个值是OpenCV中x86架构里面的vc10中的bin路径,以之前解压的OpenCV路径为例,那么这个值就应该设置为:

E:\opencv\build\x86\vc10\bin

对应的在用户环境变量里面修改PATH的值也为此值:
在这里插入图片描述
做到这里,这一步就算完成了。

3. 设置Visual Studio的编译选项
在Visual Studio中打开之前建立的项目解决方案,点击其中的“属性管理器”中的“Debug | Win32”,对其中的一些选项进行设置:
在这里插入图片描述
点击其中的“VC++ 目录”。对里面的包含目录和库目录进行修改:
在这里插入图片描述
包含目录要设置三个值,分别为OpenCV里build底下的include三路径(以本人解压的路径为例):
E:\opencv\build\include
E:\opencv\build\include\opencv2
E:\opencv\build\include\opencv

库目录设置为build里面vc10中的lib的路径:
E:\opencv\build\x86\vc10\lib

接下来设置属性页里面的链接器:
在这里插入图片描述
点击链接器里面的输入,就会弹出上面的界面,在“附加依赖项“里面增加以下的库文件即可:

opencv_calib3d249.lib
opencv_calib3d249d.lib
opencv_contrib249.lib
opencv_contrib249d.lib
opencv_core249.lib
opencv_core249d.lib
opencv_features2d249.lib
opencv_features2d249d.lib
opencv_flann249.lib
opencv_flann249d.lib
opencv_gpu249.lib
opencv_gpu249d.lib
opencv_highgui249.lib
opencv_highgui249d.lib
opencv_imgproc249.lib
opencv_imgproc249d.lib
opencv_legacy249.lib
opencv_legacy249d.lib
opencv_ml249.lib
opencv_ml249d.lib
opencv_nonfree249.lib
opencv_nonfree249d.lib
opencv_objdetect249.lib
opencv_objdetect249d.lib
opencv_ocl249.lib
opencv_ocl249d.lib
opencv_photo249.lib
opencv_photo249d.lib
opencv_stitching249.lib
opencv_stitching249d.lib
opencv_superres249.lib
opencv_superres249d.lib
opencv_ts249.lib
opencv_ts249d.lib
opencv_video249.lib
opencv_video249d.lib
opencv_videostab249.lib
opencv_videostab249d.lib

这些库文件都在本人的“E:\opencv\build\x86\vc10\lib”路径里面。

做完这一步,所有的配置工作就算大功告成了。接下来就可以来测试程序了。

程序测试

先在之前项目解决方案里面增加一个.cpp文件,文件名自取,只要满足变量命名规则就行:
在这里插入图片描述
下面是要进行测试的代码:

/*Please copy the file 'shantang.jpg' to D disk before running the program*/
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat img = imread("D:\\shantang.jpg");
	if(!img.data)
	{
		cout<<"Fail to read the image file 'img'"<<endl;
		system("pause");
		return -1;
	}
	namedWindow("Shantang");
	imshow("Shantang",img);
	waitKey(1000000);
	return 0;
}

以上代码的功能是显示一张图片,图片的路径在D盘底下,在运行程序之前,先得把你要显示的这张图片拷贝到D盘的路径下。将其中的解决方案配置设置为:“Debug | Win32”,再编译,运行:
在这里插入图片描述

其中shantang.jpg为:
在这里插入图片描述
正常运行的结果为:
在这里插入图片描述
简要说一下以上程序的逻辑:
1.Mat变量是一个图片类,可见简单地理解为用来定义一个与图片有关的变量;
2.imread函数用来读取某一指定路径下的图片,此函数在读取图片时有可能出现异常的情况,即读取的图片内容为空,此时就需要有良好的容灾机制,即读取图片为空时打印错误信息,结束进程,此举在本人imread下一行的代码里面有体现;
3.namedWindow函数,作用是建立一个图片显示窗口,其中的参数即窗口的名字;
4.imshow函数,作用是之前建立的图片显示窗口中添加要显示的图片,第一个参数是之前建立的窗口的名字,第二个是之前定义并读取的Mat类的变量;
5.waitKey函数,作用是设置图片的显示时间;

大功告成,所有的工作全部结束了。

可能出现的问题

  1. 编译不通过,出现错误

在这里插入图片描述
此情况只有可能是你在设置编译选项时没有设置正确,此时就需要重新按照本人之前讲述的步骤重新做一遍,如果重做一遍还是不行,就换成Release解决方案进行配置,然后再去编译。当图中的红色波浪线全部消失之后,方可编译通过。

2.编译通过,但抛出了“找不到XXX.dll文件”的错误
出现此情况有三点可能,第一,是你的环境变量设置不正确;第二,是你所在路径里面的库文件确实没有此项;第三,是C盘底下的system文件夹下的System32文件夹里没有此项

针对以上的三种可能错误,需逐一排除,先检查环境变量,看看其值是否设置正确,然后再转到“E:\opencv\build\x86\vc10\bin”的路径底下,检查你是否有这个动态库文件,如果没有,就需要把之前的OpenCV删了之后再重新解压一遍。若还不是此原因,则极有可能是因为第三点,此时最简单粗暴的做法就是把“E:\opencv\build\x86\vc10\bin”的路径底下的所有.dll文件拷贝到“C:\Windows\System32”的路径下

3.编译通过,也运行了,但是运行结果出乎意料
在这里插入图片描述
这就说明之前建立容灾机制是明智而正确的,本人后来检查代码,发现错误出现在这里:
在这里插入图片描述
首先,imread中的参数一定是图片的绝对路径,不能是相对路径,而且这个路径一定要书写正确,绝对不能出一点差错,后来,本人把imread中的参数改为“D:\shantang.jpg”之后,仍然运行出现此结果,后来才明白,C/C++中的‘\’字符在书写时其实是‘\’,所以正确修改应该是“D:\shantang.jpg”,就连文件名的大小写都得小心翼翼,不得出错,为了方便程序的调试,建议读者存放此时图片的路径尽可能地简单,而且路径名里面不要出现空格字符或斜杠字符。、

以上就是本人对于这一个月以来配置OpenCV和测试程序的全部经验分享。本人有利用Visual Studio和OpenCV处理图像的程序源码,在这里分享一波,此GitHub链接里面的源码会实时更新,请及时关注:

图像处理源码GitHub链接

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值