opencv初体验

1.初始安装

1.1 软件准备

我是在VS2012下安装opencv 2.4.9(windoes)
opencv的下载地址:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
选择适合你的版本,我下载的是opencv2.4.9版本。

1.2 安装opencv

双击下载的opencv-2.4.9.exe文件,选择你想要解压的位置(注意:opencv是解压安装)
这里写图片描述
解压完成后,进行环境变量配置

2.环境变量配置

1) –> 控制面板 –> 系统和安全 –> 系统 –> 高级系统设置 –> 高级 –> 环境变量,此时弹出环境变量设置对话框,如下:
这里写图片描述
2)在下方的系统变量中,点击“新建”,创建变量名为cv2.4.9系统变量(注意:这里的变量名随便),如下图所示:
这里写图片描述
这里的变量值是D:\Program Files\openCV2.4.9\opencv\build\x86\vc11\bin(即opencv解压后的bin目录路径)。这里尤其注意一点:一定要选择x86文件夹下的vc11(原因后面解释)
3)将opencv2.4.9变量包含到PATH中去,如下图所示:
这里写图片描述
到这里,opencv的环境变量的配置就完成了。

3.项目属性设置

1)新建工程:选择Win32控制台应用程序,并且为你新建的工程取一个名字,如下图所示:
这里写图片描述
点击“确定”,弹出下面对话框
2)
这里写图片描述
点击“下一步”,弹出Win32应用程序向导对话框,并按照下图选择选项,点击“完成”即可
这里写图片描述
3)打开项目属性管理器(视图属性管理器),如下:
这里写图片描述
3.1)配置项目的Debug属性
右击Debug|Win32添加新项目属性表,并且起一个属性名,如下所示:
这里写图片描述
这个时候,我们看到Debug属性下面多了一条我们刚刚创建的opencv2.4.9属性,如下所示:
这里写图片描述
然后右击上述opencv2.4.9属性,弹出其属性页,如下所示:
这里写图片描述
修改包含目录和库目录
包含目录:D:\Program Files\openCV2.4.9\opencv\build\include
库目录:D:\Program Files\openCV2.4.9\opencv\build\x86\vc11\lib
接着,点属性页中的链接器下拉菜单下的“输入”,修改其附加依赖项,如下所示:
这里写图片描述
添加的内容如下:
opencv_core249d.lib
opencv_imgproc249d.lib
opencv_highgui249d.lib
opencv_ml249d.lib
opencv_video249d.lib
opencv_features2d249d.lib
opencv_calib3d249d.lib
opencv_objdetect249d.lib
opencv_contrib249d.lib
opencv_legacy249d.lib
opencv_flann249d.lib
这里写图片描述
最后点击确定按钮。
3.2)配置项目的Release属性
配置Release属性与上面的Debug属性基本一样,唯一的区别就是在修改附加依赖项的时候,添加的内容将其中的库文件名最后一个d去掉即可,比如: “opencv_core249d.lib” 变成”opencv_core249.lib”。全部去掉后变成:
opencv_core249.lib
opencv_imgproc249.lib
opencv_highgui249.lib
opencv_ml249.lib
opencv_video249.lib
opencv_features2d249.lib
opencv_calib3d249.lib
opencv_objdetect249.lib
opencv_contrib249.lib
opencv_legacy249.lib
opencv_flann249.lib

4.测试代码

在解决方案资源管理中,项目opencvTest的源文件中新建opencvTest.cpp
这里写图片描述
测试代码1:

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    //从文件中读入图像
    Mat img = imread("E:\\picture\\IMG_0743.jpg");

    //如果读入图像失败
    if(img.empty())
    {
        fprintf(stderr,"Error: load image failed.");
        return -1;
    }

    //窗口显示
    namedWindow("image",CV_WINDOW_AUTOSIZE);

    //显示图像
    imshow("image",img);
    waitKey();

    return 0;
}

最终运行结果:
这里写图片描述
测试代码2:

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat img = imread("E:\\picture\\IMG_0743.jpg");

    if(img.empty())
    {
        fprintf(stderr,"Error: load image failed.");
        return -1;
    }

    Mat grey;
    cvtColor(img, grey, CV_BGR2GRAY);

    Mat sobelx;
    Sobel(grey, sobelx, CV_32F, 1, 0);

    double minVal, maxVal;
    minMaxLoc(sobelx, &minVal, &maxVal); //find minimum and maximum intensities
    Mat draw;
    sobelx.convertTo(draw, CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));

    namedWindow("src(http://blog.csdn.net/kkdd2013)", CV_WINDOW_AUTOSIZE);
    imshow("src(http://blog.csdn.net/kkdd2013)", img);
    imshow("dst(http://blog.csdn.net/kkdd2013)", draw);
    waitKey();

    return 0;
}

最终运行结果:
这里写图片描述
左边是原图,右边是经过索贝尔算子处理后的效果图

5.遇到的问题及解决方法

1)问题1:无法启动此程序,因为计算机中丢失MSVCP120D.dll。尝试重新安装该程序以解决此问题。
度娘找到的解决方法:首先搞清楚vs2012对应的应该用无法启动此程序,因为计算机中丢失MSVCP110D.dll,而MSVCP120D.dll对应的版本是vs2013,现在我在VS2012上遇到丢失MSVCP120D.dll的问题,是因为vs2012错误的用了2013版的dll,具体为啥错用,不清楚。
既然在vs2012上遇到了这个问题,就要解决。网上最好的解决方法是:下载安装VC++ 2013 32位可再发行组件包vcredist 2013 x86
下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=40784
这样就可以使用 Visual Studio 2013 生成的 C++ 应用程序时所需的运行时组件。
2)问题2:
编写测试代码中,图片地址写错,导致找不到图片信息。
错误原因:图片路径地址不能这样写:E:\picture\IMG_0743.jpg,而应该写成E:\picture\IMG_0743.jpg或者E:/picture/IMG_0743.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值