OpenCV是一个很不错的开源计算机视觉库。我自己已经玩了一段时间了,决定把一些学习成果整理出来,分享给大家。学习OpenCV最好的助手当然是opencv自带的手册和教程了。手册是英文版的,方便查找函数。教程有部分是中文版的,也有一部分没有汉化。可以通过网址:http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html查看。
这次主要是想说一个opencv中的数据共享机制。先看程序:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
//测试引用计数方面的问题
int main()
{
Mat image = imread("D:/picture/img.tif");
imshow("读入的图片",image);
Mat result = image;
//result = image.clone();
//image.copyTo(result);
//滤波程序
blur(image,image,Size(7,7));
imshow("结果图片",result);
waitKey(0);
return 0;
}
程序做了一下几件事情:读入图片image,将image于result关联起来。OpenCV中一个重要的特点就是你不必事先指定图像的长、宽、像素深度等信息,库函数会自动帮你完成。然后对image图像进行滤波,显示滤波以后result图像的结果(注意:不是image的结果)。
对于图像result,程序中提供3种方式与图像image关联:第一种是是用“=”,第二种是用copyTo,第三种使用clone。运行代码可以发现:当使用“=”时,对image的滤波会导致result的图像改变;而使用clone或者copyTo不会引起result的改变。
原因是什么呢?因为使用“=”时,并没有复制新的数据,而只是让result指向image。它们指向的是内存中的同一份数据。等号操作以后,image的引用计数+1而已。这就是所谓的“浅拷贝”。而copyTo则是把矩阵的每个元素都重新拷贝给了result。copyTo不仅拷贝了矩阵元素值,还复制了矩阵的一些其他信息。它们是所谓的“深拷贝”。
分享到:
相关推荐
OpenCV 3计算机视觉:Python语言实现,代码+pdf文档,适合于计算机视觉研究者
OpenCV学习笔记入门版,真正的入门级别,自己写的
opencv的学习资料:OpenCV2.1.pdf OpenCV中文手册 learning opencv电子版
Opencv学习笔记 辛苦收集希望和大家交流
爱分享、爱极客的编程怪兽--DaveBobo 博文 《【OpenCV学习笔记 005】 操作像素》 博文链接: http://blog.csdn.net/davebobo/article/details/52541612 OpenCV版本:2.4.9
这个一个很基础的opencv学习笔记,一些常会遇到的问题,在这里做了肤浅的介绍,还有很多问题没有提及,以后会陆续整理,并上传
OpenCV 3计算机视觉:Python语言实现 (Joe Minichino)
标题学习opencv第一天: 一、图像基本操作: 1.图像读取:cv.imread(“文件位置:D:/python/picture.png” ) 函数功能:从文件路径中读取图片文件并显示出来,可读取的文件类型有JPG、JPEG、PNG、Webp等 函数原型:...
OpenCV学习笔记,(基础概念,归纳总结),相信你所选择的。
OpenCV学习笔记(C++版OpenCV学习笔记,主要包括基础模块和DNN模块)带详细注释源码!!!
OpenCv学习笔记(六):使用opencv画线、矩形、椭圆、多边形线、多边形体等.pdf
爱分享、爱极客的编程怪兽--DaveBobo 博文 《【OpenCV学习笔记 008】基于形态学运算的图像变换》 博文链接: http://blog.csdn.net/davebobo/article/details/52561463 OpenCV版本:2.4.9
爱分享、爱极客的编程怪兽--DaveBobo 博文 《【OpenCV学习笔记 007】使用直方图统计像素》 博文链接: http://blog.csdn.net/davebobo/article/details/52554968 OpenCV版本:2.4.9
有关学习opencv与C++过程中的一些学习笔记
opencv编译缺少文件:ffmpeg文件(对应opencv 4.7.0)
opencv的学习资料:OpenCV2.1.pdf OpenCV中文手册 learning opencv电子版
学习笔记
爱分享、爱极客的编程怪兽--DaveBobo 博文 《【OpenCV学习笔记 013】处理视频序列》 博文链接: http://blog.csdn.net/davebobo/article/details/52677657 OpenCV版本:2.4.9
爱分享、爱极客的编程怪兽--DaveBobo 博文 《【OpenCV学习笔记 010】提取直线、轮廓及连通区域》 博文链接: http://blog.csdn.net/davebobo/article/details/52583167 OpenCV版本:2.4.9