OpenCV(2)-- 图像掩膜操作

原创 2018年04月15日 11:00:21

1、掩膜的定义

掩模是由0和1组成的一个二进制图像。当在某一功能中应用掩模时,1值区域被处理,被屏蔽的0值区域不被包括在计算中
。通过指定的数据值、数据范围、有限或无限值、感兴趣区和注释文件来定义图像掩模,也可以应用上述选项的
任意组合作为输入来建立掩模。

2、 数字图像处理中,图像掩膜主要用于:

①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
④特殊形状图像的制作。用选定的图像、图形或物体,对待处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。用于覆盖的特定图像或物体称为掩模或模板。

3、掩膜操作函数

Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);  //定义一个3*3掩膜的kernel
filter2D(src, hello, -1, kernel); //filter2D为掩膜操作函数

代码示例:

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
    Mat src,dst;
    src = imread("D:/VS2015Program/buildsrc1.jpg");
    if (src.empty())
    {
        cout << "load image error" << endl;
    }
    namedWindow("1", CV_WINDOW_AUTOSIZE);
    imshow("1", src);

    namedWindow("output", CV_WINDOW_AUTOSIZE);

    cvtColor(src, dst, CV_BGR2GRAY);

    int cols = dst.cols;
    int rows = dst.rows;
    const uchar* firstRow = dst.ptr<uchar>(5);

    Mat M(300, 300, CV_8UC3, Scalar(0, 0, 255)); //初始化M图像矩阵
    printf("first pixel value is : %d\n", *firstRow);  //通过printf函数打印一些有用信息

    Mat m1;
    m1.create(src.size(), src.type()); //利用create方法创建m1矩阵,其中m1大小和类型都和src一样
    m1 = Scalar(0, 0, 255); //Scalar为赋颜色的函数,常用

    Mat hello;
    Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);  //定义一个3*3掩膜的kernel
    filter2D(src, hello, -1, kernel); //filter2D为掩膜操作函数

    Mat m2 = Mat::zeros(200, 200, CV_8UC1); //创建m2图像矩阵新方法

    cout << "m2" << endl << m2 << endl;
    imshow("output", hello);
    waitKey(0);
    return 0;
}

输出图片结果如下:
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Missayaaa/article/details/79947442

关于opencv 图像掩膜操作srcImage.copyto(dstImage, mask)说明

#include #include #include using namespace std; using namespace cv; bool ROI_AddImage() { Mat...
  • u014455876
  • u014455876
  • 2016-08-31 16:28:14
  • 5453

利用掩模分割图像 opencv+VS

  • 2017年11月23日 17:02
  • 4.03MB
  • 下载

OpenCV--矩阵的掩膜操作

所谓掩膜其实就是一个矩阵,然后根据这个矩阵重新计算图片中像素的值。 掩膜主要有以下用途: 提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图...
  • qq_25343557
  • qq_25343557
  • 2017-11-28 13:24:47
  • 438

opencv掩膜操作

所谓的掩膜操作,是用来提高图像的对比度。掩膜操作有一个简单的公式: 在进行掩膜操作之前,必须需要了解下面几个opencv的函数: (1)int Mat对象.channels();//获取图...
  • ZouCharming
  • ZouCharming
  • 2017-04-04 22:55:00
  • 1593

图像处理基础

第一章 概述 第二章 数字图像基本知识 1、 彩色图像、灰度图像、二值图像和索引图像区别? 答:(1)彩色图像,每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,2...
  • Xiongchao99
  • Xiongchao99
  • 2017-07-26 22:19:35
  • 9124

FPGA与数字图像处理技术

数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释。 为存储、传输和表示而对图像数据进行处理,以便于机器自动理解。 图像处理(image...
  • woshifennu1234
  • woshifennu1234
  • 2017-09-17 08:44:55
  • 1048

OpenCV学习第三篇:图片的掩膜操作(实现图像的对比度调整)

掩膜操作实现图像的对比度调整 矩阵的掩膜操作十分简单,根据掩膜来重新计算每个像素的像素值,掩膜(mask也被称为kernel) I(i,j) = 5* I(i,j)-[I(i-1,j)+I(i+1...
  • xiongwen_li
  • xiongwen_li
  • 2017-11-10 21:30:57
  • 273

OpenCV中掩膜操作(mask)实例

#include #include #include using namespace cv; using namespace std; void Sharpen(const Mat& myI...
  • lichengyu
  • lichengyu
  • 2014-07-09 22:32:41
  • 7940

matlab rgb通道的图像显示

%打开图像 [FileName,FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据'); str=[FilePath...
  • yimingsilence
  • yimingsilence
  • 2014-10-28 17:00:39
  • 5502

图像处理基础知识

 图像掩膜: 用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。用于覆盖的特定图像或物体称为掩模或模板。光学图像处理中,掩模可以是胶片、滤光片等。数...
  • lxw907304340
  • lxw907304340
  • 2015-05-27 13:13:26
  • 1522
收藏助手
不良信息举报
您举报文章:OpenCV(2)-- 图像掩膜操作
举报原因:
原因补充:

(最多只允许输入30个字)