您的位置:首页 > 运维架构

opencv学习:安装与图像载入,融合

2017-11-22 08:53 253 查看
本文参照浅墨博文:http://blog.csdn.net/poem_qianmo/article/details/19809337;http://blog.csdn.net/poem_qianmo/article/details/20537737

安装

安装时按照步骤进行安装,注意编译器的位数。

出现错误 1error C1083: 无法打开包括文件: “opencv2/core/core.hpp”: No such file or directoryD:\my 文档\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\源.cpp

解决方法:明确自己使用的何种编译器,在配置的时候选好Debug x64 or Debug Win32。

出现错误2   error LNK1104: 无法打开文件“opencv_world310.dll”D:\my 文档\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\LINK

解决方法:看看添加的库文件的后缀是多少,是lib而不是dll。

还有其他错误:你看看你的图片放到工程文件下了?或者给出图片的路径了?

图像载入与融合

在演示图像载入与融合时,会出现内存不足情况,将调试器从debug改为release,再改回来。

要实事求是,根据图片大小设置相关参数,否则会出现指针异常等非受迫性错误。

addWeighted(imageROI,0.5,logo,0.3,0.,imageROI); 

改行代码的意思是将imageROI与logo进行融合,目前只清楚logo后的0.3为logo图片的透明度,从0到1。其他待定

在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest)。

定义ROI区域有两种方法,第一种是使用cv:Rect.顾名思义,cv::Rect表示一个矩形区域。指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数)就可以定义一个矩形区域。

Mat mask =("m2的文件名.jpg",0)

m2.copyTo(imageROI,mask);

在进行融合时,一定要知道文件到底有多大,在之前imread的时候不要轻易改变图片大小,在之后用mask取同一图片的灰度图像,再将mask复制到设置的ROI中,保证两者的大小一致。

addWeighted函数

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

第一个参数,InputArray类型的src1,表示需要加权的第一个数组,常常填一个Mat。
第二个参数,alpha,表示第一个数组的权重
第三个参数,src2,表示第二个数组,它需要和第一个数组拥有相同的尺寸和通道数。
第四个参数,beta,表示第二个数组的权重值。
第五个参数,dst,输出的数组,它和输入的两个数组拥有相同的尺寸和通道数。
第六个参数,gamma,一个加到权重总和上的标量值。看下面的式子自然会理解。
第七个参数,dtype,输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,这个参数设置为-1(默认值),即等同于src1.depth()。

在事例中灰度值为0和3通道什么的后续再看。
我的jiqishijue2实现如下:



双边滤波可以很好的将边缘的像素和其他区别,个人看法如图



读《学习Opencv中文版》笔记:

1.cvNamedWindow(窗口名称,0或者保持默认),创建窗口。0表示,用户可以随意调整窗口大小;默认设置则表示会自动调整窗口大小并不可以让用户调整。

2.cvSaveImage(文件名,要存储的图像)

3.cvMouseCallback(鼠标事件类型,x,y,鼠标事件标志,void指针传递额外参数信息)鼠标回调

4.cvSetMouseCallback(指定有效的窗口,回调函数cvMouseCallback,void指针传递额外参数信息)

有效窗口是只有在该窗口下触发事件才会调用回调函数。

5.cvCreateTrackbar(滚动条名称,显示窗口名,与滚动条关联的数指针,滚动条最大值,回调函数)回调函数为CvTrackbarCallback(不一定叫这个名)

6.CvCapture* xx = cvCreateFileCapture("文件名")读取视频

7.写视频文件可以参考工程duqushexiangtou。

8.直方图绘制,先构造出直方图的数组存储数据,在进行画图。直方图均值化equalizeHist(原图像,目标图像)。详情见MATLAB文件下wangyuhuan工程。

9.图像金字塔:金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。
高斯金字塔(Gaussianpyramid):
用来向下采样,主要的图像金字塔
拉普拉斯金字塔(Laplacianpyramid):
用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。可以将拉普拉斯金字塔理解为高斯金字塔的逆形式。

函数:PyrDown,PyrUp。PyrUp不是降采样的逆操作,两个函数不是逆操作。down会丢失信息,先卷积再删掉偶数行列;而up是先扩充到指定大小,新的像素值为零,再卷积根据临近的像素去给出新像素的值,这就会使放大的图像显得模糊。

如果对你有帮助,谢谢你^_^

红包还不收?




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: