zoukankan      html  css  js  c++  java
  • copyTo和clone的区别/制作mask的fillpoly函数(有问题)

    OpenCV中mat::copyto( )函数使用方法

    OpenCV的fillPoly函数

      使用OpenCV库进行图像处理时,经常会用到clone和copyTo函数,这里对两个函数进行介绍。

    • copyTo函数

      实现和clone一样的功能,但一般多用于掩模贴图

    1 Mat src = imread(imagepath); 
    2 Mat src_temp;
    3 src.copyTo(src_temp);

      另外用途最广的是它的贴图功能:

    1 src.copyTo(src_temp, mask);

      其中mask为一个二值的掩模图像,如果如果在某个像素点(i, j)其值为1,则把src中对应位置的像素复制到src_temp中,其余为0的位置像素保持不变。在制作mask时,将感兴趣区域填充为白色,其余部分为黑色可以使用fillpoly函数。

    • fillPoly函数
     1 #include <iostream>    
     2 #include <opencv2/opencv.hpp>  
     3   
     4 using namespace cv;  
     5 using namespace std;  
     6   
     7   
     8 int main()  
     9 {  
    10     Mat src = imread("02.jpg");  
    11       
    12     Point root_points[1][6];  //这里有一个问题,如果数组内的数据个数事先不知道,需要开辟很大的数组,占用内存
    13     root_points[0][0] = Point(215, 220);  
    14     root_points[0][1] = Point(460, 225);  
    15     root_points[0][2] = Point(466, 450);  
    16     root_points[0][3] = Point(235, 465);  
    17     root_points[0][4] = Point(260, 390);  
    18     root_points[0][5] = Point(96, 310);  
    19   
    20     const Point* ppt[1] = { root_points[0] };  
    21     int npt[] = { 6 };  
    22   
    23     //生成原图大小的全黑图像
    24     cv::Mat mask_ann, dst;  
    25     src.copyTo(mask_ann);  
    26     mask_ann.setTo(cv::Scalar::all(0));  
    27   
    28     fillPoly(mask_ann, ppt, npt, 1, Scalar(255, 255, 255));  
    29     imshow("mask_ann", mask_ann);  
    30     src.copyTo(dst, mask_ann);  
    31     imshow("dst", dst);  
    32     waitKey();  
    33     return 0;  
    34 } 
    • clone函数

      分析源码可以看出,该函数的实现是copyTo的第一种用法:

    1 inline Mat Mat::clone() const
    2 {
    3    Mat m;
    4     copyTo(m);
    5     return m; 
    6 }

      多用于复制图片,比如读入一张图像,对其进行处理时,只是想看下效果并不像让原图发生变化,这时候可以重新声明如下:

    1 Mat src = imread(imagepath);
    2 Mat src_temp = src.clone();
  • 相关阅读:
    BZOJ 2034 【2009国家集训队】 最大收益
    vijos P1780 【NOIP2012】 开车旅行
    BZOJ 2115 【WC2011】 Xor
    BZOJ 3631 【JLOI2014】 松鼠的新家
    BZOJ 4717 改装
    BZOJ 2957 楼房重建
    BZOJ 4034 【HAOI2015】 T2
    BZOJ 1834 【ZJOI2010】 network 网络扩容
    BZOJ 2440 【中山市选2011】 完全平方数
    BZOJ 2733 【HNOI2012】 永无乡
  • 原文地址:https://www.cnblogs.com/qinguoyi/p/8371292.html
Copyright © 2011-2022 走看看