超详细注释之OpenCV制作图像Mask

作者:程序媛一枚~ 时间:2021-10-20 14:15:34 

这篇博客将介绍如何使用OpenCV制作Mask图像掩码。使用位运算和图像掩码允许我们只关注图像中感兴趣的部分,截取出任意区域的ROIs。

应用:

图像感兴趣区域的截取;

图像融合:构建透明的叠加层;

1. 效果图

原始图如下:(老九门颖宝&佛爷~)

超详细注释之OpenCV制作图像Mask

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

超详细注释之OpenCV制作图像Mask

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

超详细注释之OpenCV制作图像Mask

2. 源码


# 分别使用矩形和圆形遮罩从图像中提取身体和脸部。
# USAGE
# python opencv_masking.py

import argparse

import cv2
# 导入必要的包
import numpy as np

# 构建命令行参数及解析
# --image 输入图像路径
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", type=str, default="yc.jpg",
               help="path to the input image")
args = vars(ap.parse_args())

# 加载原始输入图像,并展示
image = cv2.imread(args["image"])
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, (155, 200), 140, 255, -1)
masked = cv2.bitwise_and(image, image, mask=mask)

# 展示输出图像
cv2.imshow("Circular Mask", mask)
cv2.imshow("Circular Mask Applied to Image", masked)
cv2.waitKey(0)

参考

https://www.pyimagesearch.com/2021/01/19/image-masking-with-opencv/

来源:https://blog.csdn.net/qq_40985985/article/details/118251920

标签:OpenCV,图像Mask,python
0
投稿

猜你喜欢

  • Python中设置变量作为默认值时容易遇到的错误

    2023-09-14 09:32:00
  • Python里disconnect UDP套接字的方法

    2023-03-26 02:48:00
  • 解决pygal.style的LightColorizedStyle参数问题

    2023-09-20 06:39:02
  • Python利用OpenCV和skimage实现图像边缘检测

    2023-01-27 01:08:43
  • 情人节快乐! python绘制漂亮玫瑰

    2021-02-07 18:22:48
  • Centos6.5和Centos7 php环境搭建方法

    2023-11-14 19:25:38
  • pandas 使用merge实现百倍加速的操作

    2022-06-11 08:22:28
  • 解决vue项目input输入框双向绑定数据不实时生效问题

    2024-05-28 15:42:13
  • python实现进度条的多种实现

    2021-03-20 10:39:52
  • 使用Python实现图像融合及加法运算

    2021-03-03 06:19:42
  • javascript十个最常用的自定义函数(中文版)

    2024-04-16 09:26:38
  • python中的np.argmax() 返回最大值索引号

    2022-08-07 14:22:57
  • python tkinter GUI绘制,以及点击更新显示图片代码

    2021-07-27 14:11:33
  • pyqt实现.ui文件批量转换为对应.py文件脚本

    2022-01-22 03:32:26
  • asp如何验证日期输入是否正确?

    2010-06-10 18:38:00
  • jupyter实现重新加载模块

    2023-12-16 20:46:45
  • python中Matplotlib绘制直线的实例代码

    2022-09-24 18:27:52
  • Python中itertools模块用法详解

    2023-05-28 05:00:27
  • 详解Python如何实现对比两个Excel数据差异

    2023-06-14 00:37:10
  • Python基于checksum计算文件是否相同的方法

    2022-11-08 20:30:48
  • asp之家 网络编程 m.aspxhome.com