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 }    
  • 相关阅读:
    数据库的创建与管理
    html+css画虚线,实线
    隐藏导航练习
    表单—注册邮箱
    整理—运算符l
    softmax函数理解
    离线配置Anaconda3+tensorflow-gpu1.4.0+cuda8.0+cudnn6.0
    stl总结精简版
    hdu_2030
    康托展开
  • 原文地址:https://www.cnblogs.com/wuxiaotianC/p/6535577.html
Copyright © 2011-2022 走看看