OpenCV图像掩码(Mask)制作与ROI提取实战

Elena
Elena
发布时间:2026-10-15| 3人浏览过
原创

本文详解OpenCV中图像掩码(Mask)的制作与应用。通过矩形和圆形示例,演示如何利用位运算提取感兴趣区域(ROI),实现图像局部截取与透明叠加融合。提供完整Python源码及参数解析,帮助开发者掌握任意形状掩码的生成技巧。

本文介绍如何利用OpenCV生成图像掩码(Mask)。借助位运算与图像掩码技术,我们可以精准锁定图像中的感兴趣区域(ROI),从而提取特定部分的内容。

主要应用场景包括:

截取图像中的特定感兴趣区域;

实现图像融合,例如构建具有透明效果的叠加层。

1. 效果展示

原始输入图像如下(示例人物为老九门中的颖宝与佛爷):

矩形掩码处理效果如下:通过应用矩形掩码,仅提取包含人物的区域,忽略背景及其他无关部分。

圆形掩码处理效果如下:左侧显示圆形掩模,右侧展示掩模应用后的结果。实际上,可以使用任意形状的掩码图像(如矩形、圆形、线条、多边形等)从原图中提取指定区域。

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/

至此,关于OpenCV制作图像掩码的详细注释教程已结束。如需了解更多OpenCV图像Mask相关内容,请查阅本站往期文章或继续浏览后续文章。感谢支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。