Python通過OpenCV的findContours獲取輪廓并切割實(shí)例
1 獲取輪廓
OpenCV2獲取輪廓主要是用cv2.findContours
import numpy as np import cv2 im = cv2.imread('test.jpg') imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(imgray,127,255,0) image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
其中,findContours的第二個(gè)函數(shù)很重要,主要分為 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP, cv2.RETR_EXTERNAL,具體含義可參考官方文檔
2 畫出輪廓
為了看到自己畫了哪些輪廓,可以使用 cv2.boundingRect()函數(shù)獲取輪廓的范圍,即左上角原點(diǎn),以及他的高和寬。然后用cv2.rectangle()方法畫出矩形輪廓
for i in range(0,len(contours)): x, y, w, h = cv2.boundingRect(contours[i]) cv2.rectangle(image, (x,y), (x+w,y+h), (153,153,0), 5)
3切割輪廓
輪廓的切割主要是通過數(shù)組切片實(shí)現(xiàn)的,不過這里有一個(gè)小技巧:就是圖片切割的w,h是寬和高,而數(shù)組講的是行(row)和列(column)
所以,在切割圖片時(shí),數(shù)組的高和寬是反過來寫的
newimage=image[y+2:y+h-2,x+2:x+w-2] # 先用y確定高,再用x確定寬 nrootdir=("E:/cut_image/") if not os.path.isdir(nrootdir): os.makedirs(nrootdir) cv2.imwrite( nrootdir+str(i)+".jpg",newimage) print (i)
這樣就可以把確定的輪廓都切割出來了。
總結(jié)
以上就是本文關(guān)于Python通過OpenCV的findContours獲取輪廓并切割實(shí)例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
OpenCV-Python實(shí)現(xiàn)輪廓檢測(cè)實(shí)例分析
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- Python OpenCV獲取視頻的方法
- Python基于opencv調(diào)用攝像頭獲取個(gè)人圖片的實(shí)現(xiàn)方法
- python opencv鼠標(biāo)事件實(shí)現(xiàn)畫框圈定目標(biāo)獲取坐標(biāo)信息
- python-opencv獲取二值圖像輪廓及中心點(diǎn)坐標(biāo)的代碼
- python openCV獲取人臉部分并存儲(chǔ)功能
- python3+openCV 獲取圖片中文本區(qū)域的最小外接矩形實(shí)例
- python openCV實(shí)現(xiàn)攝像頭獲取人臉圖片
- OpenCV-Python實(shí)現(xiàn)凸包的獲取
- python使用OpenCV獲取高動(dòng)態(tài)范圍成像HDR
相關(guān)文章
對(duì)python中詞典的values值的修改或新增KEY詳解
今天小編就為大家分享一篇對(duì)python中詞典的values值的修改或新增KEY詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01python pands實(shí)現(xiàn)execl轉(zhuǎn)csv 并修改csv指定列的方法
今天小編就為大家分享一篇python pands實(shí)現(xiàn)execl轉(zhuǎn)csv 并修改csv指定列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12使用Python實(shí)現(xiàn)在Windows下安裝Django
今天小編就為大家分享一篇關(guān)于使用Python實(shí)現(xiàn)在Windows下安裝Django,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10Python NumPy實(shí)現(xiàn)數(shù)組搜索示例詳解
NumPy是一個(gè)開源的Python科學(xué)計(jì)算庫,使用NumPy可以很自然地使用數(shù)組和矩陣,這篇文章主要介紹了使用NumPy實(shí)現(xiàn)數(shù)組搜索,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05java關(guān)于string最常出現(xiàn)的面試題整理
在本篇文章里小編給大家整理的是一篇關(guān)于java關(guān)于string最常出現(xiàn)的面試題整理內(nèi)容,有興趣的朋友們可以參考下。2021-01-01python開發(fā)利器之ulipad的使用實(shí)踐
Ulipad是一個(gè)國(guó)人limodou編寫的專業(yè)Python編輯器,它基于wxpython開發(fā)的GUI(圖形化界面)。下面這篇文章主要介紹了python開發(fā)利器之ulipad的使用實(shí)踐,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn)
公司使用的是企業(yè)微信,因此考慮Jenkins通知企業(yè)微信機(jī)器人的實(shí)現(xiàn)方式,本文主要介紹了python使用jenkins發(fā)送企業(yè)微信通知的實(shí)現(xiàn),感興趣的可以了解一下2021-06-06PyQt5中多線程模塊QThread使用方法的實(shí)現(xiàn)
這篇文章主要介紹了PyQt5中多線程模塊QThread使用方法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python真題案例之小學(xué)算術(shù)?階乘精確值?孿生素?cái)?shù)?6174問題詳解
這篇文章主要介紹了python實(shí)操案例練習(xí),本文給大家分享的案例中主要任務(wù)有小學(xué)生算術(shù)、階乘的精確值、孿生素?cái)?shù)、6174問題,需要的小伙伴可以參考一下2022-03-03