zoukankan      html  css  js  c++  java
  • Mat的复制

    转自:http://blog.csdn.net/patkritlee/article/details/52782086

    OpenCV中使用Mat,经常会碰到这样一种场景,会想拷贝一份Mat,并对新的Mat进行操作。但是OpenCV中的clone()和直接赋值都会导致共享数据区,也就是相当于&。

    而使用copy,才会获取新的Mat。

     1 #include <iostream>    
     2 #include <highgui.h>    
     3     
     4 using namespace std ;    
     5 using namespace cv ;    
     6     
     7 int main()    
     8 {    
     9     Mat image = imread("1.png" , 0) ;    
    10         
    11     //Mat image1(image) ;//仅是创建了Mat的头部分,image1与image共享数据区    
    12     //Mat image1 = image ;//仅是创建了Mat的头部分,image1与image共享数据区    
    13     //Mat image1 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image1中    
    14     Mat image1 ;    
    15     image.copyTo(image1) ;//拷贝image的数据区到image1中,在拷贝数据前会有一步:image1.create(this->size , this->type)    
    16     for(int h = 0 ; h < image1.rows ; ++ h)    
    17     {    
    18         uchar* ptr = image1.ptr(h) ;    
    19         for(int w = 0 ; w < image1.cols ; ++ w)    
    20         {    
    21             ptr[w] = 0 ;    
    22         }    
    23     }    
    24     imshow("image" , image) ;    
    25     imshow("image1" , image1) ;    
    26     waitKey() ;    
    27     return 0 ;    
    28 }    
  • 相关阅读:
    Java数据库操作(MySQL与SQLserver)
    LeetCode 11. 盛最多水的容器
    LeetCode 10.正则表达式匹配
    LeetCode 9.回文数
    LeetCode 7. 整数反转
    LeetCode 6.Z 字形变换
    LeetCode 4.寻找两个正序数组的中位数
    LeetCode 3. 无重复字符的最长子串
    JOI2020遗迹
    线性规划对偶
  • 原文地址:https://www.cnblogs.com/wuxiaotianC/p/6535577.html
Copyright © 2011-2022 走看看