opencv学习笔记之一(数据的复制)
来源:互联网 发布:彩虹六号最低配优化 编辑:程序博客网 时间:2024/05/16 01:12
这次主要是想说一个opencv中的数据共享机制。先看程序:
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;Mat function(){ Mat ima(500,500,CV_8U,50); return ima;}int main(){ //定义图像窗口 namedWindow("Image 1"); namedWindow("Image 2"); namedWindow("Image 3"); namedWindow("Image 4"); namedWindow("Image 5"); //创建一个240行,320列的新图像 Mat image1(240,320,CV_8U,100); imshow("Image",image1); waitKey(0);//等待按键 image1.create(200,200,CV_8U);//重新分配一个新的图像 image1=200; imshow("image",image1);//显示图像 waitKey(0); //创建爱你一个红色图像 //通道依次为BGR Mat image2(240,320,CV_8UC3,Scalar(0,0,255)); //或者image2(Size(320,240),CV_8 U3);image2=Scalar(0,0,255); imshow("Image",image2); waitKey(0); Mat image3=imread("C:\\Users\\liufeng\\Pictures\\图片2.png");//读入一个图像 //所有的图像都指向同一个数据块 Mat image4(image3); image1=image3; //这些图像都是原图像的副本 image3.copyTo(image2); Mat image5=image3.clone(); //转换图像来测试; flip(image3,image3,1); //检查图像 imshow("Image 1",image1); imshow("Image 2",image2); imshow("Image 3",image3); imshow("Image 4",image4); imshow("Image 5",image5); waitKey(0); Mat gray=function();//获取灰度图 imshow("Image",gray); waitKey(0); //作为灰度图读入 image1=imread("C:\\Users\\liufeng\\Pictures\\图片2.png",CV_LOAD_IMAGE_GRAYSCALE); image1.convertTo(image2,CV_32F,1/255.0,0.0); imshow("image2",image2); waitKey(0); return 0;}
程序做了一下几件事情:读入图片image,并利用“=”、CopyTo、clone等方法使图像,其中”=”方法会使对image的改变影响关联图像。
原因是什么呢?因为使用“=”时,并没有复制新的数据,而只是让result指向image。它们指向的是内存中的同一份数据。等号操作以后,image的引用计数+1而已。这就是所谓的“浅拷贝”。
0 0
- opencv学习笔记之一(数据的复制)
- OpenCV学习笔记之一(OpenCV的基本数据类型)
- 【OpenCV学习笔记】之一: reduce() 和 findContours()的使用陷阱
- OpenCv基础学习笔记之一[highgui_c.h]
- OpenCv基础学习笔记之一[types_c.h]
- OpenCv基础学习笔记之一[core_c.h]
- OpenCV学习笔记之一:OpenCV中显示图片(VS2010+OpenCV3.0版本)
- 新型分布式架构的特点---大数据学习笔记之一
- OPENCV C++接口的复制roi数据。
- [openCV] opencv学习笔记-入门(25)Mat 的学习
- opencv学习之一简单的图片显示
- opencv入门笔记之一
- java中IO流的学习笔记(2、复制数据)
- Redis学习笔记之十二:Redis复制(数据同步)
- 我的OpenCV学习笔记(23):Mat中实际数据是如何保存的
- OpenCV学习笔记(10):查看MAT对象的数据的三种方法
- 玩转OpenCV之一:关于OpenCV学习版本的选择
- opencv学习之一
- 20款Notepad++插件下载和介绍
- 冒泡排序
- 乐学成语(1)
- Samba服务器配置
- 正则表达式30分钟入门教程
- opencv学习笔记之一(数据的复制)
- USB驱动程序移植
- Exchange 学习网站
- AutoCAD中程序化加载.NET程序集的方法
- HI3531开发板开机LOG文本,在学习开发板时帮我挺大
- 求1000以内的所有水仙花数
- Alibaba阿里巴巴开源软件列表
- 求椭圆的切线方程------很有对称美
- 【Java学习-J.160601.0.20】一个验证码的servlet