OpenCV制作Mask图像掩码的案例

 更新时间:2023年02月16日 14:42:10   作者:前热火球员LeBron James  
这篇文章主要介绍了OpenCV制作Mask图像掩码的案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、掩膜(mask)

在有些图像处理的函数中有的参数里面会有mask参数,即此函数支持掩膜操作,首先何为掩膜以及有什么用,如下:
数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域。
图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。
数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于:
①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
④特殊形状图像的制作。

二、案例

1.效果图

原始图如下:

矩形掩码 VS 效果图如下:(使用矩形掩码,只提取图像中指定的区域,而忽略其他区域)

圆形掩码 VS 效果图如下:(圆形掩模显示在左边,掩模的应用在右边。实质上可以使用任意形状的掩码图像,如矩形、圆、线、多边形等从图像中提取区域)

2. 源码

def main():
    '''
    分别使用矩形和圆形遮罩从图像中提取矩形区域和圆形区域。
    '''
    import argparse
    import cv2
    import numpy as np

    images_bg = r'C:\dest\speed_bg.png'
    # 加载原始输入图像,并展示
    image = cv2.imread(images_bg)
    cv2.imshow("Original", image)
    # 掩码和原始图像具有相同的大小,但是只有俩种像素值:0(背景忽略)、255(前景保留)
    mask = np.zeros(image.shape[:2], dtype="uint8")
    cv2.rectangle(mask, (30, 90), (280, 440), 255, -1)
    cv2.imshow("Rectangular Mask", mask)
    # 应用掩码图像
    masked = cv2.bitwise_and(image, image, mask=mask)
    cv2.imshow("Rectangular Mask Applied to Image", masked)
    cv2.waitKey(0)
    # 构造一个圆形掩码(半径为140px,并应用位运算)
    mask = np.zeros(image.shape[:2], dtype="uint8")
    cv2.circle(mask, (210, 210), 160, 255, -1)
    # cv2.circle(mask, (202, 202), 110, 255, -1)
    masked = cv2.bitwise_and(image, image, mask=mask)
    bitwiseNot = cv2.bitwise_not(mask)
    cv2.imshow("bitwiseNot", bitwiseNot)
    # 展示输出图像
    cv2.imshow("Circular Mask", mask)
    cv2.imshow("Circular Mask Applied to Image", masked)
    cv2.waitKey()
    # TACH_PATTERN_PATH = r'C:\dest\new\tach_mask.png'
    # aircv.imwrite(TACH_PATTERN_PATH, bitwiseNot)
    TACH_PATTERN_PATH2 = r'C:\dest\new\speed_mask.png'
    aircv.imwrite(TACH_PATTERN_PATH2, mask)

if __name__ == "__main__":
    main()

参考资料:
Image Masking with OpenCV
超详细注释之OpenCV制作图像Mask
OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜

到此这篇关于OpenCV制作Mask图像掩码的文章就介绍到这了,更多相关OpenCV Mask图像掩码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python发腾讯微博代码分享

    python发腾讯微博代码分享

    本文介绍了利用qwebview写的一个发腾讯微博的功能,大家可以改成新浪微博,原理是一样的,大家参考使用吧
    2014-01-01
  • python掌握字符串只需这一篇就够了

    python掌握字符串只需这一篇就够了

    字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可
    2021-11-11
  • 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    这篇文章主要介绍了一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python中的heapq模块源码详析

    Python中的heapq模块源码详析

    这篇文章主要给大家介绍了关于Python中heapq模块的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Python实战小游戏飞机大战详解

    Python实战小游戏飞机大战详解

    飞机大战想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用python写一个简单的飞机大战小游戏的相关资料,需要的朋友可以参考下
    2021-11-11
  • 自然语言处理之文本热词提取(含有《源码》和《数据》)

    自然语言处理之文本热词提取(含有《源码》和《数据》)

    这篇文章主要介绍了自然语言处理之文本热词提取,主要就是通过jieba的posseg模块将一段文字分段并赋予不同字段不同意思,然后通过频率计算出热频词,需要的朋友可以参考下
    2022-05-05
  • Django filter动态过滤与排序实现过程解析

    Django filter动态过滤与排序实现过程解析

    这篇文章主要介绍了Django filter动态过滤与排序实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python中编写ORM框架的入门指引

    Python中编写ORM框架的入门指引

    这篇文章主要介绍了Python中编写ORM框架的入门指引,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Python获取百度热搜的完整代码

    Python获取百度热搜的完整代码

    这篇文章主要介绍了Python获取百度热搜的完整代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • python实现输入任意一个大写字母生成金字塔的示例

    python实现输入任意一个大写字母生成金字塔的示例

    这篇文章主要介绍了python实现输入任意一个大写字母生成金字塔的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论