欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV數(shù)字圖像處理之ROI區(qū)域的提取

 更新時(shí)間:2021年12月17日 14:09:07   作者:xiaoheizi_du  
ROI區(qū)域又叫感興趣區(qū)域。在機(jī)器視覺、圖像處理中,從被處理的圖像以方框、圓、橢圓、不規(guī)則多邊形等方式勾勒出需要處理的區(qū)域,稱為感興趣區(qū)域,ROI。本文主要為大家介紹如何通過Python+OpenCV提取ROI區(qū)域,需要的朋友可以了解一下

利用mask(掩模)技術(shù)提取純色背景圖像ROI區(qū)域中的人和物,并將提取出來的人或物添加在其他圖像上。

1、實(shí)現(xiàn)原理

先通過cv.cvtColor()函數(shù),將原RGB彩色圖像轉(zhuǎn)換為hsv色彩空間的圖像,然后通過cv.inRange()函數(shù)獲得ROI區(qū)域的Mask,最后利用cv.bitwise()函數(shù)提取得到ROI區(qū)域。

2、使用的函數(shù)簡述

(1) cv.cvtColor(img, cv.COLOR_BGR2HSV)函數(shù)

img為要進(jìn)行色彩空間轉(zhuǎn)換的原圖

cv.COLOR_BGR2HSV即將原圖RGB色彩空間轉(zhuǎn)換為HSV色彩空間

(2) cv.inRange(hsv, (h_min, s_min, v_min), (h_max, s_max, v_max))函數(shù)

cv.inRange函數(shù)通過設(shè)置不同的h、s、v的min和max閾值可以獲取不同色彩的一個(gè)二值的mask圖,下圖為各顏色的閾值表:

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

第一個(gè)函數(shù)為按位與操作函數(shù),將img1和img2在mask的區(qū)域內(nèi),R,G,B三個(gè)分量分別進(jìn)行按位與操作。第二個(gè)函數(shù)為按位或操作函數(shù),將img1和img2在mask的區(qū)域內(nèi),R,G,B三個(gè)分量分別進(jìn)行按位或操作。第三個(gè)函數(shù)為按位取反操作函數(shù),將img在R,G,B三個(gè)分量分別進(jìn)行按位取反操作。

(4)cv.add(img1, img2)函數(shù)

將img1和img2 進(jìn)行相加操作,img1和img2的尺寸必須要相同。

3、代碼實(shí)現(xiàn)過程

原圖如下:

如圖,要從圖中提取出卡通人物,并將其貼在其他背景上。

(1)讀入原始圖像

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

(2)獲取mask

hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)       # 轉(zhuǎn)換成hsv色彩風(fēng)格
mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))   # 利用inRange產(chǎn)生mask
cv.imshow('mask1', mask)

由于背景為綠色,可以提取綠色背景的mask,由上表可以查出綠色和青色的值,設(shè)置好參數(shù)后,就可以獲得mask(白色區(qū)域才是mask區(qū)域):

注意:這里獲取的mask為背景的mask,我們要獲得人物的mask。

(3)獲取人物mask

通過邏輯非操作取反,即可獲得人物的mask區(qū)域(白色區(qū)域):

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

(4)獲取人物

將原始圖像與原始圖像在mask區(qū)域進(jìn)行邏輯與操作,即可獲取

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

以上操作即提取了圖像中的ROI(卡通人)區(qū)域,下面介紹將介紹將提取出來的圖貼到其他背景上。

(5)新建一張與原始圖一樣大小的藍(lán)色的背景圖

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

(6)得到藍(lán)色背景的mask

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

(7)將人物圖貼到藍(lán)色背景上

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

4、整體代碼?

import cv2 as cv
import numpy as np

src = cv.imread('person.jpg')
cv.imshow('src', src)
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)       # 轉(zhuǎn)換成hsv色彩風(fēng)格
mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255))        # 利用inRange產(chǎn)生mask
cv.imshow('mask1', mask)
cv.imwrite('mask1.jpg', mask)

# 獲取mask
mask = 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數(shù)字圖像處理之ROI區(qū)域的提取的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV ROI區(qū)域的提取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python?opencv背景減去法摳圖實(shí)現(xiàn)示例

    python?opencv背景減去法摳圖實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了python?opencv背景減去法摳圖實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • PyQT5 實(shí)現(xiàn)快捷鍵復(fù)制表格數(shù)據(jù)的方法示例

    PyQT5 實(shí)現(xiàn)快捷鍵復(fù)制表格數(shù)據(jù)的方法示例

    這篇文章主要介紹了PyQT5 實(shí)現(xiàn)快捷鍵復(fù)制表格數(shù)據(jù)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python使用Streamlit庫制作Web可視化頁面

    python使用Streamlit庫制作Web可視化頁面

    一談到Web頁面,可能大家首先想到就是HTML,CSS或JavaScript。 本次小F就給大家介紹一下如何用Python制作一個(gè)數(shù)據(jù)可視化網(wǎng)頁,使用到的是Streamlit庫。輕松的將一個(gè)Excel數(shù)據(jù)文件轉(zhuǎn)換為一個(gè)Web頁面,提供給所有人在線查看。
    2021-05-05
  • Linux永久修改pip配置源的詳細(xì)過程

    Linux永久修改pip配置源的詳細(xì)過程

    默認(rèn)情況下pip使用的是國外的鏡像,在下載的時(shí)候速度非常慢,所以需要更換PIP的鏡像源,下面這篇文章主要給大家介紹了關(guān)于Linux永久修改pip配置源的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Python導(dǎo)包模塊報(bào)錯(cuò)的問題解決

    Python導(dǎo)包模塊報(bào)錯(cuò)的問題解決

    這篇文章主要介紹了Python導(dǎo)包模塊報(bào)錯(cuò)的問題解決,文章圍繞主題相關(guān)內(nèi)容詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Python 數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解

    Python 數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python3.5文件修改操作實(shí)例分析

    Python3.5文件修改操作實(shí)例分析

    這篇文章主要介紹了Python3.5文件修改操作,結(jié)合實(shí)例形式分析了Python3.5針對(duì)txt文本文件的讀寫、修改等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python實(shí)現(xiàn)隨機(jī)生成一個(gè)漢字的方法分享

    Python實(shí)現(xiàn)隨機(jī)生成一個(gè)漢字的方法分享

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)隨機(jī)生成一個(gè)漢字的功能,文中的示例代碼講解詳細(xì),對(duì)我們深入了解Python有一定的幫助,需要的可以參考一下
    2023-01-01
  • Python進(jìn)階:生成器 懶人版本的迭代器詳解

    Python進(jìn)階:生成器 懶人版本的迭代器詳解

    這篇文章主要介紹了Python進(jìn)階:生成器 懶人版本的迭代器詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • python文件與目錄操作實(shí)例詳解

    python文件與目錄操作實(shí)例詳解

    這篇文章主要介紹了python文件與目錄操作方法,結(jié)合實(shí)例形式詳細(xì)分析了Python關(guān)于文件與目錄操作的常見技巧與使用方法,需要的朋友可以參考下
    2016-02-02

最新評(píng)論