OpenCV制作Mask图像掩码的案例
作者:前热火球员LeBron 发布时间:2023-09-20 16:34:04
一、掩膜(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等图像基本运算及掩膜
来源:https://blog.csdn.net/qq_34663267/article/details/129039070


猜你喜欢
- 1. 系统盘清理说明win7 80G的系统盘,随着使用时间的增加,空间越来越小,只剩不到2G,随计划清理系统盘数据1. maven 下载的j
- 一. 元组元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作。1.1 元组的创建元组
- 最近写文章遇到图片有水印,如何去除水印呢?网上找了各种办法,也跑到小红书、抖音等平台找有没有不收费就去水印的网站,但是基本上都是需要VIP会
- 这里直接给出第一个版本的直接实现:import osimport numpy as npfrom sklearn.cluster impor
- 场景在 Go 语言中,常量分为有类型常量和无类型常量。// 有类型常量const VERSION string = "v1.0.0
- 本文实例讲述了Python实现的简单hangman游戏。分享给大家供大家参考。具体如下:#!/usr/bin/env pythonimpor
- 公布到网页上的Email经常会被一些工具自动提取,一些非法用户就会利用所提取的Email大肆发送垃圾邮件。这些工具大多都是查找链接中“mai
- 回车和换行的历史:机械打字机有回车和换行两个键作用分别是:换行就是把滚筒卷一格,不改变水平位置。 (即移到下一行,但不是行首,而是和上一行水
- 1、汇总统计介绍几个聚集函数有多少名学生SELECT COUNT(*) FROM student;SELECT COUNT(1) FROM
- 大家好,都说追女孩方法大于态度,学Python也是,今天就给大家分享的是我在用Python编写程序时常用的一些小技巧。1.多次打印同一个字符
- bookheader.asp Recommended Books for <%=session(&quo
- 今天用pytorch保存模型时遇到bugCan't pickle <class 'torch._C._Variable
- 在项目中时间一律显示为2014-10-20 10:22显得很呆板。在微博、QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时
- 首先这个是7米当时问我一个问题,不过可惜我不知道怎么解决,后来知道解决方法很简单,只是添加了一个margin-top:-1em就
- numpy随机打乱数据方法np.random.shuffleimport numpy as np#实验可得每次shuffle后数据都被打乱,
- 相信认真做过网页设计(Web Design),或者关注过页面设计的同行都对“空格”不陌生。“空格”属于一类细节,很容易被忽略,但又比较影响效
- 前言这段时间一直在研究飞浆平台,最近试了试PaddleSpeech项目,试着对文本语音做处理。整体的效果个人觉着不算特别优越,只能作为简单的
- 方法一、线程池执行的循环代码为自己写的情况定义一个全局变量,默认为T,当QT界面关闭后,将该变量值改为F。线程执行的循环代码内增加一个判断方
- 测了一下django、flask、bottle、tornado 框架本身最简单的性能。对django的性能完全无语了。django、flas
- 有一个需求, 需要从数据库中导出两张表的数据到同一个excel中鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据.数据涉及