這篇文章主要介紹Python如何通過OpenCV的findContours獲取輪廓并切割,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
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的第二個函數很重要,主要分為 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP, cv2.RETR_EXTERNAL,具體含義可參考官方文檔
2 畫出輪廓
為了看到自己畫了哪些輪廓,可以使用 cv2.boundingRect()函數獲取輪廓的范圍,即左上角原點,以及他的高和寬。然后用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切割輪廓
輪廓的切割主要是通過數組切片實現的,不過這里有一個小技巧:就是圖片切割的w,h是寬和高,而數組講的是行(row)和列(column)
所以,在切割圖片時,數組的高和寬是反過來寫的
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)
1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。
以上是“Python如何通過OpenCV的findContours獲取輪廓并切割”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。