【opencv学习之十五】Opencv Mat的浅层拷贝与深层拷贝
来源:互联网 发布:淘宝排版软件 编辑:程序博客网 时间:2024/06/05 11:56
对于Mat之间赋值传递,opencv分为两种情况一种是浅层拷贝比如Mat A=imread("x.jpg"); Mat B=A;时候B就是浅层拷贝A,B只拷贝了A的的头部和地址,当B被操作后A也随之改变;第二种既是深层拷贝,例如Mat A=imread("x.jpg"); Mat B=A.clone();这时候B是开辟了新的内存完全的复制了A的内容,操作B不会对A造成影响;
下面为实例代码:
void matTest2(){ //1、浅层拷贝对某些算子没有影响 Mat img1=imread("D:/ImageTest/test.jpg"); Mat img2=img1; cv::imshow("First1", img1); //对于灰度及canny算子等图像浅层拷贝没有影响 // cvtColor( img2, img2, CV_BGR2GRAY );//Canny边缘检测需要灰度图像 Canny( img2, img2, 30, 100); //Canny 边缘检测 cv::imshow("Second1", img1); cv::waitKey(0); //2、浅层拷贝对某些算子有影响比如翻转操作 Mat img3=imread("D:/ImageTest/test.jpg"); Mat img4=img3; //拷贝方式为浅拷贝 imshow("First2",img3); // cvtColor( img4, img4, CV_BGR2GRAY );//灰度加入灰度后图像变为深层拷贝 flip(img4,img4,1); //注意应在原地进行镜像变换 imshow("Second2",img3); cv::waitKey(0); //3、深层拷贝翻转操作也无影响 Mat img5=imread("D:/ImageTest/test.jpg"); Mat img6=img5.clone(); //深层拷贝后无影响 imshow("First3",img5); flip(img6,img6,1); //注意应在原地进行镜像变换 imshow("Second3",img5); cv::waitKey(0);}第一组的处理结果:
第二组的处理结果:
第三组的处理结果:
阅读全文
0 0
- 【opencv学习之十五】Opencv Mat的浅层拷贝与深层拷贝
- OpenCV Mat 拷贝与ROI
- 浅层拷贝与深层拷贝
- C++和Java的浅层拷贝与深层拷贝
- java 学习 -深层拷贝 浅层拷贝 暑假第九天
- opencv浅拷贝与深拷贝
- opencv之深拷贝及浅拷贝,IplImage装换为Mat
- opencv之深拷贝及浅拷贝,IplImage装换为Mat
- opencv之深拷贝及浅拷贝,IplImage装换为Mat
- OpenCV中图像的浅拷贝与深拷贝
- OpenCV中图像的浅拷贝与深拷贝
- 浅层拷贝和深层拷贝
- QT+opencv学习笔记一 opencv配置及Mat浅拷贝
- OpenCV拷贝与ROI
- 学习OpenCV(3)CvMat,Mat和IplImage之间的转化和拷贝
- 【计算机视觉】【图像处理】【VS开发】【Qt开发】opencv之深拷贝及浅拷贝,IplImage装换为Mat
- OpenCV中矩阵类详解之三:CvMat,Mat和IplImage之间的转化和拷贝
- OpenCV中矩阵类详解之三:CvMat,Mat和IplImage之间的转化和拷贝
- kafka java 生产消费程序demo示例
- 树形DP- Anniversary party
- Ubuntu14.04 Pycharm安装及no jdk found解决方法
- python:使用requests,bs4爬取西刺代理并验证
- Linux下的网络编程
- 【opencv学习之十五】Opencv Mat的浅层拷贝与深层拷贝
- 机器学习入门体验(一)
- 创建一个记事本软件
- [LC]13. Roman to Integer
- html块元素和内联元素
- 浅谈SpringMVC后端与前端Ajax的五种交互方法
- 入坑cocos之菜鸟瞎喷
- Shell 显示带颜色字体
- Eclipse中Debug功能使用