zoukankan      html  css  js  c++  java
  • OpenCV——掩膜(又称掩码)mask的原理和作用

    一、什么是掩模mask

    OpenCV中很多函数都带有一个mask参数,mask被称为掩模。图像掩模一般用来对处理的图像(全部或者局部)进行遮挡,来控制图像处理的区域或处理过程。

    二、掩模原理

    掩模一般是小于等于源图像的单通道矩阵,掩模中的值分为两种0和非0。以Mat::copyTo为例,当mask的值不为0,则将源图像拷贝到目标图像,当mask为0,则不进行拷贝,目标图像保持不变。

    源图像            目标图像          mask            源图像拷贝叠加到目标图像上得到新的目标图像

    100  30  55    50  220  210     0    0   0                50  220  210

    20  180  88    99  77  12      255  255  255                  20    180        88

    33  28  110    92  110  115     255  255  255               33        28         110

     三、示例

     1 #include <opencv2/opencv.hpp>
     2 #include <iostream>
     3 
     4 using namespace cv;
     5 using namespace std;
     6 
     7 
     8 int main(int argc, char** argv)
     9 {
    10     Mat src = imread("test.jpg");
    11     Mat src1 = src.clone();
    12     Mat dst, edge, gray;
    13 
    14     dst.create(src1.size(), src1.type());
    15     dst = Scalar::all(0);
    16 
    17     cvtColor(src1, gray, COLOR_BGR2GRAY);
    18 
    19     blur(gray, edge, Size(3, 3));
    20 
    21     Canny(edge, edge, 3, 9, 3);
    22 
    23     //掩膜的存在使得只有边缘部分被copy
    24     src1.copyTo(dst, edge);
    25 
    26     imshow("效果图", dst);
    27     
    28     waitKey(0);
    29     return 0;
    30 
    31 }
  • 相关阅读:
    【内存泄漏】方法三:利用linux的valgrind命令定位内存泄露(Memory Leak)
    【内存泄漏】方法二:利用linux的mtrace命令定位内存泄露(Memory Leak)
    Windows下sqlmap的使用_01
    关于安装和使用BurpSuite及Java环境的配置问题
    Windows下修改环境变量的几种方法
    OPPO VOOC快充原理
    在线代码运行
    Linux在线学习模拟器
    socket设置为非阻塞模式
    pthread_mutexattr_t设置的相关函数及其说明
  • 原文地址:https://www.cnblogs.com/long5683/p/9675121.html
Copyright © 2011-2022 走看看