0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡述OpenCV中如何提取不規(guī)則ROI區(qū)域

新機器視覺 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2021-05-28 09:16 ? 次閱讀

什么是ROI

ROI是英文Region Of Interest的三個首字母縮寫,很多時候我們對圖像的分析就是對圖像特定ROI的分析與理解,對細(xì)胞與醫(yī)療圖像來說,ROI提取正確才可以進行后續(xù)的分析、測量、計算密度等,而且這些ROI區(qū)域往往不是矩形區(qū)域,一般都是不規(guī)則的多邊形區(qū)域,很多OpenCV初學(xué)者都不知道如何提取這些不規(guī)則的ROI區(qū)域。其實OpenCV中有個非常方便的API函數(shù)可以快速提取各種非正常的ROI區(qū)域。

提取ROI區(qū)域

在做這個之前,首先來了解一下什么圖像處理中的mask(遮罩),OpenCV中是如此定義Mask的:八位單通道的Mat對象,每個像素點值為零或者非零區(qū)域。當(dāng)Mask對象添加到圖像區(qū)上時,只有非零的區(qū)域是可見,Mask中所有像素值為零與圖像重疊的區(qū)域就會不可見,也就是說Mask區(qū)域的形狀與大小直接決定了你看到最終圖像的大小與形狀。一個具體的示例如下:

可以看出,mask的作用是可以 幫助我們提取各種不規(guī)則的區(qū)域。OpenCV中完成上述步驟操作只需要簡單調(diào)用API函數(shù)bitwise_and即可。

于是另外一個問題也隨之而來,我們怎么生成這樣mask區(qū)域,答案是在OpenCV中有兩種方法搞定Mask區(qū)域生成。

方法一:

通過手動選擇,然后通過多邊形填充即可做到,代碼實現(xiàn)如下:

importcv2ascv importnumpyasnp src=cv.imread("D:/images/gc_test.png") cv.imshow("input",src) h,w,c=src.shape #手工繪制ROI區(qū)域 mask=np.zeros((h,w),dtype=np.uint8) x_data=np.array([124,169,208,285,307,260,175]) y_data=np.array([205,124,135,173,216,311,309]) pts=np.vstack((x_data,y_data)).astype(np.int32).T cv.fillPoly(mask,[pts],(255),8,0) cv.imshow("mask",mask) #根據(jù)mask,提取ROI區(qū)域 result=cv.bitwise_and(src,src,mask=mask) cv.imshow("result",result) cv.waitKey(0)

運行效果如下:

方法二:

這個也是OpenCV新手最迷茫的地方,如何通過程序生成mask,其實真的很簡單??创a演示吧!

src=cv.imread("D:/images/gc_test.png") cv.imshow("input",src) #生成mask區(qū)域 hsv=cv.cvtColor(src,cv.COLOR_BGR2HSV) mask=cv.inRange(hsv,(156,43,46),(180,255,255)) cv.imshow("mask",mask) #提取ROI區(qū)域,根據(jù)mask result=cv.bitwise_and(src,src,mask=mask) cv.imshow("result",result) cv.waitKey(0)

效果如下:

主要是分為三步

提取輪廓ROI

生成Mask區(qū)域

提取指定輪廓

特別需要注意的是->其中生成Mask可以根據(jù)輪廓、二值化連通組件分析、inRange等處理方法得到。這里基于inRange方式得到mask區(qū)域,然后提取。

實際應(yīng)用演示

最后看兩個在實際處理會用到mask實現(xiàn)ROI提取然后重新背景融合之后生成新圖像效果:

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61489
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67764
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41088
  • mask
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2885

原文標(biāo)題:OpenCV中如何提取不規(guī)則ROI區(qū)域

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    簡述MOS管的工作區(qū)域

    MOS管(Metal-Oxide-Semiconductor Field-Effect Transistor,金屬-氧化物半導(dǎo)體場效應(yīng)晶體管)是電子電路中廣泛使用的元件,具有三個主要的工作區(qū)域:截止
    的頭像 發(fā)表于 09-14 17:10 ?213次閱讀

    OpenCV圖像識別C++代碼

    安裝OpenCV庫 首先,您需要在您的計算機上安裝OpenCV庫。您可以從OpenCV官網(wǎng)下載預(yù)編譯的庫或從源代碼編譯。安裝完成后,確保將OpenCV的頭文件和庫文件添加到您的項目中。
    的頭像 發(fā)表于 07-16 10:42 ?1083次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?433次閱讀

    OpenCV攜奧比光3D相機亮相CVPR 2024

    6月17日-21日,奧比光合作伙伴OpenCV攜Orbbec 3D相機參展在美國西雅圖舉辦的CVPR 2024(即IEEE國際計算機視覺與模式識別會議),讓開發(fā)者親身體驗Orbbec 3D相機
    的頭像 發(fā)表于 06-21 09:38 ?367次閱讀

    三維掃描產(chǎn)品外觀提取不規(guī)則外觀輪廓線輔助貼紙設(shè)計方案

    三維掃描技術(shù)是集光學(xué)、機電和計算機技術(shù)于一體的高新無損檢測技術(shù)。CASAIM三維掃描設(shè)備,能夠?qū)嵨锏目臻g外形、結(jié)構(gòu)乃至色彩進行全方位的掃描,將復(fù)雜的立體信息快速轉(zhuǎn)換為計算機能直接處理的數(shù)字信號。這一技術(shù)能夠精確地獲取物體表面的空間坐標(biāo),為實物提取輪廓線提供了快捷、精確及方便的手段。
    的頭像 發(fā)表于 06-11 15:58 ?171次閱讀
    三維掃描產(chǎn)品外觀<b class='flag-5'>提取</b><b class='flag-5'>不規(guī)則</b>外觀輪廓線輔助貼紙設(shè)計方案

    嵌入式學(xué)習(xí)-飛凌ElfBoard ELF 1板卡 - 如何在Ubuntu編譯OpenCV

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在 Ubuntu 環(huán)境下將 OpenCV 編譯為 X86 架構(gòu)可能更加方便和高效。 通過在主機上編譯并
    發(fā)表于 06-07 09:21

    ELF 1技術(shù)貼|如何在Ubuntu編譯OpenCV

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過在主機上編譯并使用X86架構(gòu)
    的頭像 發(fā)表于 05-31 16:41 ?1031次閱讀
    ELF 1技術(shù)貼|如何在Ubuntu<b class='flag-5'>中</b>編譯<b class='flag-5'>OpenCV</b>庫

    請問STM32_ImageProcessingLibrary中有類似于opencv的findContours函數(shù)嗎?

    STM32_ImageProcessingLibrary中有類似于opencv的findContours函數(shù)嗎?
    發(fā)表于 03-07 07:17

    二值圖像連通區(qū)域的標(biāo)記原理

    ,即給每個連通區(qū)域一個唯一的標(biāo)識符。 連通區(qū)域標(biāo)記是圖像分析和圖像處理的一個重要步驟,可以用于圖像分割、邊緣檢測、目標(biāo)提取、形狀描述等應(yīng)用。在本文中,我們將介紹二值圖像連通
    的頭像 發(fā)表于 01-05 14:28 ?628次閱讀

    AD芯片采用外部時鐘時,外部時鐘源可以是不規(guī)則的TTL電平嗎?

    AD芯片采用外部時鐘時,外部時鐘源可以是不規(guī)則的TTL電平嗎? 該TTL電平具體表現(xiàn)為,頻率由低到高,再由高到低,最大100K,每一個電平高電平是恒定的,低電平在不停的變化。 這樣的TTL電平能作為AD芯片的采樣時鐘嗎
    發(fā)表于 12-22 08:31

    如何搞定不規(guī)則形狀的PCB設(shè)計難題

    簡單 PCI 電路板外形可以很容易地在大多數(shù) EDA Layout 工具中進行創(chuàng)建。然而,當(dāng)電路板外形需要適應(yīng)具有高度限制的復(fù)雜外殼時,對于PCB 設(shè)計人員來說就沒那么容易了,因為這些工具的功能與機械 CAD 系統(tǒng)的功能并不一樣。
    發(fā)表于 12-12 16:33 ?258次閱讀

    對于形狀近似矩形但邊緣有規(guī)則起伏的情況,可以使用OpenCV的approxPolyDP函數(shù)進行多邊形擬合和矩形檢測。

    對于形狀近似矩形但邊緣有規(guī)則起伏的情況,可以使用OpenCV的approxPolyDP函數(shù)進行多邊形擬合和矩形檢測。 approxPolyDP函數(shù)通過在給定的點集上使用動態(tài)規(guī)劃算法,計算出近似
    發(fā)表于 11-01 09:23

    OpenCV初學(xué)者如何提取這些不規(guī)則ROI區(qū)域

    ,而且這些ROI區(qū)域往往不是矩形區(qū)域,一般都是不規(guī)則的多邊形區(qū)域,很多OpenCV初學(xué)者都不知道
    的頭像 發(fā)表于 10-31 14:51 ?756次閱讀

    怎么測不規(guī)則正弦波交流電壓?

    怎么測不規(guī)則正弦波交流電壓
    發(fā)表于 10-16 06:39

    OpenCV 如何加載圖片

    之前也寫過一些 OpenCV 的文章,最近正好在考慮 寫一個 OpenCV相關(guān)的工具,目前還是在開發(fā)過程,邊開發(fā)邊更新。預(yù)計會持續(xù)一段時間。目前的想法是把 OpenCV 的 API
    的頭像 發(fā)表于 10-09 15:01 ?602次閱讀