OPENCV学习经过

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

OPENCV学习经过

因为工程实践的原因,我们初步了解了VS2010和OPENCV2.4.10,为以后车牌识别系统的开发打下基础。首先是开发平台的搭建,我们通过上网了解了配置过程:

1.配置环境变量,我的电脑>>属性>>高级>>环境变量

编辑PATH:

“opencv的安装目录\opencv\build\x86\vc10\bin”

和“opencv的安装目录\opencv\build\x64\vc10\bin

2.(1)工程包含目录配置

打开vs2010,新建一个win32控制台应用程序,空项目,取名为test

在配置属性--->VC++目录--->包含目录文件中添加D:\opencv\build\include\opencv2

D:\opencv\build\include\opencv1 D:\opencv\build\include(根据自己OPENCV文件

安装的路径来写)

(2)工程库目录配置

在配置属性--->VC++目录--->库目录中添加D:\opencv\build\x64\vc10\lib(根据自己

OPENCV文件安装的路径来写)

(3)链接库配置

打开属性页面。【通用属性】->【链接器】->【输入】->【附加的依赖项】,添加如下内容:

opencv_ml2410d.lib

opencv_calib3d2410d.lib

opencv_contrib2410d.lib

opencv_core2410d.lib

opencv_features2d2410d.lib

opencv_flann2410d.lib

opencv_gpu2410d.lib

opencv_highgui2410d.lib

opencv_imgproc2410d.lib

opencv_legacy2410d.lib

opencv_objdetect2410d.lib

opencv_ts2410d.lib

opencv_video2410d.lib

opencv_nonfree2410d.lib

opencv_ocl2410d.lib

opencv_photo2410d.lib

opencv_stitching2410d.lib

opencv_superres2410d.lib

opencv_videostab2410d.lib

opencv_objdetect2410.lib

opencv_ts2410.lib

opencv_video2410.lib

opencv_nonfree2410.lib

opencv_ocl2410.lib

opencv_photo2410.lib

opencv_stitching2410.lib

opencv_superres2410.lib

opencv_videostab2410.lib

opencv_calib3d2410.lib

opencv_contrib2410.lib

opencv_core2410.lib

opencv_features2d2410.lib

opencv_flann2410.lib

opencv_gpu2410.lib

opencv_highgui2410.lib

opencv_imgproc2410.lib

opencv_legacy2410.lib

opencv_ml2410.lib

(4)测试配置结果:

在解决方案资源管理器中右键点击源文件>>添加>>新建项>>C++文件,名为test.cpp

输入以下代码:

#include

#include

#include

using namespace cv;

using namespace std;

int main()

{

Mat img = imread("pp.jpg");

if(img.empty())

{

cout<<"error";

return -1;

}

imshow("xx的靓照",img);

waitKey();

return 0;

}

我们平常一般使用64位操作系统;因此要把解决方案平台从win32改为x64。修改后生成解决方案,但仍出现如下错误:

经过上网查资料,需要在项目属性>>链接器>>目标计算机成x64的选项:(操作完成后需要重启计算机)

生成解决方案后,在DEBUG文档中放入名为“pp.jpg”的图片。

双击生成的test.exe文件

总结:要注意解决平台与计算机系统的匹配。

学习一:图像的载入,显示和输出

最简单的图像载入和显示只需要3句代码,非常便捷。这三句代码分别对应了三个函数,他们分别是:

imread( ), namedWindow( )以及imshow( )。

1. Inmread 用于读取图片,Imread的官方定义:Mat imread(const string& filename , int flags=1) (注意:flag>0

返回一个3通道的彩色图像。Flags<0返回包含Alpha通道的加载的图像,flags=0返回灰度图像)

2. nameWindow用于创建一个窗口,nameWindow的官方定义:void namedWindow(const string& winname,int

flags=WINDOW_AUTOSIZE );

3. imshow用于在指定的窗口中显示一幅图像,imshow官方定义:void imshow(const string& winname,

InputArray mat);

输出图像到文件——imwrite函数

定义:bool imwrite(const string& filename,InputArray img, const vector& params=vector() );

最后将上述所学编一个综合实例:

#include

#include

#include

using namespace cv;

using namespace std;

int main()

{

Mat boyss=imread("boy.jpg",1);

if (boyss.empty())

{

return -1;

}

namedWindow("boys");

imshow("boys",boyss);

imwrite("帅气",boyss);

waitKey();

return 0;

}

生成test1.exe,效果图如下:

学习二:ROI区域图像叠加

在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest),来专注或者简化我们的工作过程。也就是从图像中选择的一个图像区域,这个区域是我们图像分析所关注的重点。我们圈定这个区域,以便进行进一步处理。定义方法:

Mat imageROI;

ImageROI=image(Rect(500,250,log.cols,log.rows));

接下来了解了一种初级图像的混合——线性混合操作,理论公式:g(x)=(1-a)*f1(x)+a*f2(x);运用了OpenCV

中addWeighted函数可以达到操作的目的。对于addWeighted,原型如下:

void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);

第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。

第二个参数,alpha,表示第一个数组的权重

第三个参数,src2,表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数。

第四个参数,beta,表示第二个数组的权重值。

第五个参数,dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道数。

第六个参数,gamma,一个加到权重总和上的标量值。看下面的式子自然会理解。

第七个参数,dtype,输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,这个参数设置为-1

相关文档
最新文档