iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python+OpenCV数字图像处理中如何进行ROI区域的提取
  • 462
分享到

Python+OpenCV数字图像处理中如何进行ROI区域的提取

2023-06-22 03:06:37 462人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、实现原理先通过cv.cvtColor

本篇文章给大家分享的是有关python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1、实现原理

先通过cv.cvtColor()函数,将原RGB彩色图像转换为hsv色彩空间的图像,然后通过cv.inRange()函数获得ROI区域的Mask,最后利用cv.bitwise()函数提取得到ROI区域。

2、使用的函数简述

(1) cv.cvtColor(img, cv.COLOR_BGR2HSV)函数

img为要进行色彩空间转换的原图

cv.COLOR_BGR2HSV即将原图RGB色彩空间转换为HSV色彩空间

(2) cv.inRange(hsv, (h_min, s_min, v_min), (h_max, s_max, v_max))函数

cv.inRange函数通过设置不同的h、s、v的min和max阈值可以获取不同色彩的一个二值的mask图,下图为各颜色的阈值表:

Python+OpenCV数字图像处理中如何进行ROI区域的提取

(3)cv.bitwise_and(img1, img2, mask),cv.bitwise_or(img1, img2, mask)和cv.bitwise_not(img)

第一个函数为按位与操作函数,将img1和img2在mask的区域内,R,G,B三个分量分别进行按位与操作。第二个函数为按位或操作函数,将img1和img2在mask的区域内,R,G,B三个分量分别进行按位或操作。第三个函数为按位取反操作函数,将img在R,G,B三个分量分别进行按位取反操作。

(4)cv.add(img1, img2)函数

将img1和img2 进行相加操作,img1和img2的尺寸必须要相同。

3、代码实现过程

原图如下:

Python+OpenCV数字图像处理中如何进行ROI区域的提取

如图,要从图中提取出卡通人物,并将其贴在其他背景上。

(1)读入原始图像

src = cv.imread('person.jpg')cv.imshow('src', src)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

(2)获取mask

hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)       # 转换成hsv色彩风格mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))   # 利用inRange产生maskcv.imshow('mask1', mask)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

由于背景为绿色,可以提取绿色背景的mask,由上表可以查出绿色和青色的值,设置好参数后,就可以获得mask(白色区域才是mask区域):

注意:这里获取的mask为背景的mask,我们要获得人物的mask。

(3)获取人物mask

通过逻辑非操作取反,即可获得人物的mask区域(白色区域):

mask = cv.bitwise_not(mask)cv.imshow('mask2', mask)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

(4)获取人物

将原始图像与原始图像在mask区域进行逻辑与操作,即可获取

timg1 = cv.bitwise_and(src, src, mask=mask)cv.imshow('timg1', timg1)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

以上操作即提取了图像中的ROI(卡通人)区域,下面介绍将介绍将提取出来的图贴到其他背景上。

(5)新建一张与原始图一样大小的蓝色的背景图

background = np.zeros(src.shape, src.dtype)background[:,:,0] = 255

(6)得到蓝色背景的mask

mask = cv.bitwise_not(mask)dst = cv.bitwise_or(timg1, background, mask=mask)cv.imshow('dst1', dst)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

(7)将人物图贴到蓝色背景上

dst = cv.add(dst, timg1)cv.imshow('dst2', dst)

Python+OpenCV数字图像处理中如何进行ROI区域的提取

4、整体代码 

import cv2 as cvimport numpy as npsrc = cv.imread('person.jpg')cv.imshow('src', src)hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)       # 转换成hsv色彩风格mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))        # 利用inRange产生maskcv.imshow('mask1', mask)cv.imwrite('mask1.jpg', mask)# 获取maskmask = cv.bitwise_not(mask)cv.imshow('mask2', mask)cv.imwrite('mask2.jpg', mask)timg1 = cv.bitwise_and(src, src, mask=mask)cv.imshow('timg1', timg1)cv.imwrite('timg1.jpg', timg1)# 生成背景background = np.zeros(src.shape, src.dtype)background[:,:,0] = 255# 将人物贴到背景中mask = cv.bitwise_not(mask)dst = cv.bitwise_or(timg1, background, mask=mask)cv.imshow('dst1', dst)cv.imwrite('dst1.jpg', dst)dst = cv.add(dst, timg1)cv.imshow('dst2', dst)cv.imwrite('dst2.jpg', dst)cv.waiTKEy(0)cv.destroyAllwindows()

以上就是Python+OpenCV数字图像处理中如何进行ROI区域的提取,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

--结束END--

本文标题: Python+OpenCV数字图像处理中如何进行ROI区域的提取

本文链接: https://www.lsjlt.com/news/302147.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python+OpenCV数字图像处理中如何进行ROI区域的提取
    本篇文章给大家分享的是有关Python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、实现原理先通过cv.cvtColor...
    99+
    2023-06-22
  • Python+OpenCV数字图像处理之ROI区域的提取
    目录1、实现原理2、使用的函数简述3、代码实现过程(1)读入原始图像(2)获取mask(3)获取人物mask(4)获取人物(5)新建一张与原始图一样大小的蓝色的背景图(6)得到蓝色背...
    99+
    2024-04-02
  • Python+OpenCV进行不规则多边形ROI区域提取
    多边形ROI,主要利用鼠标交互进行绘制: 1. 单击左键,选择多边形的点; 2. 单击右键,删除最近一次选择的点; 3. 单击中键,确定ROI区域并可视化。 4. 按”S...
    99+
    2024-04-02
  • python+opencv图像分割如何实现分割不规则ROI区域
    这篇文章将为大家详细讲解有关python+opencv图像分割如何实现分割不规则ROI区域,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts...
    99+
    2023-06-14
  • 如何进行Python OpenCV图像模糊处理分析
    这篇文章跟大家分析一下“如何进行Python OpenCV图像模糊处理分析”。内容详细易懂,对“如何进行Python OpenCV图像模糊处理分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有...
    99+
    2023-06-26
  • 《数字图像处理-OpenCV/Python》连载(4)图像的读取与保存
    《数字图像处理-OpenCV/Python》连载(4)图像的读取与保存 本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https...
    99+
    2023-09-17
    opencv python 计算机视觉 图像处理 原力计划
  • 如何在Python中进行图像处理和识别
    如何在Python中进行图像处理和识别摘要:现代技术使得图像处理和识别在许多领域中成为了一个重要的工具。Python作为一种易于学习和使用的编程语言,具有丰富的图像处理和识别库。本文将介绍如何使用Python进行图像处理和识别,并提供具体的...
    99+
    2023-10-22
    图像处理 图像识别 Python编程
  • Python中Pillow库如何进行图像文件处理
    小编给大家分享一下Python中Pillow库如何进行图像文件处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、打开PyCharm,创建一个新的.py文件2、...
    99+
    2023-06-25
  • 如何在HTML5 中使用canvas进行图像处理
    本篇文章为大家展示了如何在HTML5 中使用canvas进行图像处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。卷积什么是卷积?就跳过一些用专业属于描述专业术语看完懵逼的解释了,语文成绩很差的我尝...
    99+
    2023-06-09
  • 如何使用Python的OpenCV库处理图像和视频
    目录介绍计算机视觉OpenCV应用:安装使用 OpenCV 处理图像1. 从文件中读取图像2. 调整图像大小:3. 旋转图像4. 翻转图像:5. 重写图像6. 裁剪图像7. 绘制形状...
    99+
    2024-04-02
  • PHP中如何进行图像处理和深度学习?
    PHP是一种常见的开发语言,被广泛应用于构建Web应用程序和网站。虽然它并不是一个专门用于图像处理和深度学习的工具,但PHP社区提供了许多现成的库和框架,可以用于这些任务。下面将介绍几个常用的PHP库和框架,并讨论它们如何进行图像处理和深度...
    99+
    2023-05-23
    深度学习 PHP图像处理 PHP深度学习
  • Python如何实现数字图像处理染色体计数
    本篇内容主要讲解“Python如何实现数字图像处理染色体计数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现数字图像处理染色体计数”吧!一、实验内容 对于下面这幅图像...
    99+
    2023-07-02
  • 如何在Python中使用OpenCV实现图像平滑处理操作
    这期内容当中小编将会给大家带来有关如何在Python中使用OpenCV实现图像平滑处理操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是图像平滑处理在尽量保留图像原有信息的情况下,过滤掉图像内部的噪...
    99+
    2023-06-15
  • PHP中如何进行遥感图像处理和地图可视化?
    在当今信息化时代中,遥感技术已经取得了越来越广泛的应用。在遥感图像处理中,PHP是一个广泛应用的编程语言,其强大的数据处理和可视化工具为遥感图像处理和数据分析提供了很多好用的方法,例如空间分析、数据储存等等。本文将介绍PHP中如何进行遥感图...
    99+
    2023-05-20
    PHP 遥感图像处理 地图可视化
  • 如何在Python中处理图像处理的问题
    如何在Python中处理图像处理的问题引言:在如今数字化的时代,图像处理已经成为一个非常重要的领域,广泛应用于计算机视觉、医学图像、图像识别等多个领域。Python作为一种简单易学的编程语言,提供了很多强大的图像处理库和工具,使得图像处理变...
    99+
    2023-10-22
    Python 图像处理 处理方法
  • Python图像处理之如何实现目标物体轮廓提取
    这篇文章将为大家详细讲解有关Python图像处理之如何实现目标物体轮廓提取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 引言目标物体的边缘对图像识别和计算机分析十分有用。边缘可以勾画出目标物体,使观察...
    99+
    2023-06-20
  • Python中如何进行数据预处理?
    Python是一种广泛使用的编程语言,它在数据科学和机器学习领域中也非常受欢迎。在这些领域中,数据预处理是一个至关重要的步骤,因为原始数据通常是不完整、不一致和不可靠的。在本文中,我们将讨论Python中如何进行数据预处理。 1.导入数据 ...
    99+
    2023-08-11
    日志 numy load
  • PHP中如何进行数据爬取和爬取后的处理?
    随着互联网的蓬勃发展,数据在我们的日常生活和工作中变得越来越重要。而网络上的数据也越来越多,获取这些数据变得越来越重要。因此,数据爬取在现代网络应用开发中变得越来越流行。PHP是广泛使用的服务器端编程语言之一,也可以用于数据爬取和处理。在本...
    99+
    2023-05-20
    PHP 数据处理 数据爬取
  • PHP中如何进行智能图像处理和人脸检测?
    随着人工智能技术不断发展,图像处理和人脸检测应用越来越广泛。PHP作为一门服务器端语言也能够支持这些应用。本文将向您介绍如何通过PHP实现智能图像处理和人脸检测。一、智能图像处理图片压缩高清晰度图片可以提供更好的视觉体验,但其同时也会导致图...
    99+
    2023-05-21
    PHP 智能图像处理 人脸检测
  • 如何利用python提取字符串中的数字
    目录一、isdigit()函数二、filter() 函数三、提取一段字符串中的数字四、匹配指定字符串开头的数字五、匹配时间,17:35:24六、匹配时间,20181011 15:28...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作