超详细注释之OpenCV制作图像Mask
作者:程序媛一枚~ 发布时间:2021-10-20 14:15:34
标签:OpenCV,图像Mask,python
这篇博客将介绍如何使用OpenCV制作Mask图像掩码。使用位运算和图像掩码允许我们只关注图像中感兴趣的部分,截取出任意区域的ROIs。
应用:
图像感兴趣区域的截取;
图像融合:构建透明的叠加层;
1. 效果图
原始图如下:(老九门颖宝&佛爷~)
矩形掩码 VS 效果图如下:(使用矩形掩码,只提取图像中包含人物的区域,而忽略其他区域)
圆形掩码 VS 效果图如下:(圆形掩模显示在左边,掩模的应用在右边。实质上可以使用任意形状的掩码图像,如矩形、圆、线、多边形等从图像中提取区域)
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


猜你喜欢
- 一、Pycharm安装Django框架二、新建Django项目1、manage.py是个管理角色,拥有的功能包括:(1)创建app: pyt
- 本文为大家分享了mysql 8.0.13 安装配置教程,供大家参考,具体内容如下下载下载地址解压解压之后没有my.ini文件(我的端口设置的
- 一.Pytorch虚拟环境简介Torch是一个用于深度学习的=数学计算库,而Pytorch则是一个基于Torch的Python机器学习库,可
- 编程的生活愈发不容易了,工作越来越难找,说多了都是泪还是给大家贡献些代码比较实际。python3 链接数据库需要下载名为pymysql的第三
- 在用户体验量化方法研究(一)中,我们以用户体验层次模型为基础,提出了三种量化用户体验的方法:以任务为中心、以行为为中心以及以体验为中心的量化
- python启用多线程后,调用exit出现无法退出的情况,原因是exit会抛出Systemexit的异常,如果在exit外围调用了try,就
- Dean Edwards 最近有篇文章很精彩,忍不住在这里翻译下。-- Split --很多 Javascript 框架都提供了自定义事件(
- 本文实例讲述了vue.js使用v-model实现表单元素(input) 双向数据绑定功能。分享给大家供大家参考,具体如下:v-model 一
- 假设有这样一个任务,希望对某个文件夹(包括所有子文件夹与文件)中的所有文件进行处理。这就需要遍历整理目录树, 处理遇到的每个文件。impor
- 实现效果先看看效果这比我手动的快多了,而且是单机的,自动玩没惹骂我,哈哈 ,多人游戏整个自动玩会被骂死~代码没装软件的先安装一下软件,没装模
- 本文档介绍了 Python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件。Requests使用 Requests 模块
- 词云图是将词汇按照频率的高低显示不同大小而形成的图,可以一目了然地看出关键词。下面是词云图的python代码~#导入需要模块import j
- Socket有一个缓冲区,缓冲区是一个流,先进先出,发送和取出的可自定义大小的,如果取出的数据未取完缓冲区,则可能存在数据怠慢。其中【rec
- 锁定数据库的一个表SELECT * FROM table WITH (HOLDLOCK)注意: 锁定数据库的一个表的区别SELECT * F
- pip search报错在用pip查包名时搜到的都是:pip search xxx。但这样是报错的:查找发现pip search由于一些bu
- 1 概述一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;第二范式
- 这篇文章主要介绍了python 哈希表实现简单python字典代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中。特殊食物:1.绿色:普通,
- 目录1. 将索引从 groupby 操作转换为列2. 使用现有的 DataFrame 设置索引3. 一些操作后重置索引4.排序后重置索引5.
- 本文实例讲述了Python基于分水岭算法解决走迷宫游戏。分享给大家供大家参考,具体如下:#Solving maze with morphol