溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python如何通過OpenCV的findContours獲取輪廓并切割

發(fā)布時間:2021-05-22 14:08:56 來源:億速云 閱讀:682 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹Python如何通過OpenCV的findContours獲取輪廓并切割,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

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的第二個函數(shù)很重要,主要分為 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP, cv2.RETR_EXTERNAL,具體含義可參考官方文檔

2 畫出輪廓

為了看到自己畫了哪些輪廓,可以使用 cv2.boundingRect()函數(shù)獲取輪廓的范圍,即左上角原點,以及他的高和寬。然后用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ù)組切片實現(xiàn)的,不過這里有一個小技巧:就是圖片切割的w,h是寬和高,而數(shù)組講的是行(row)和列(column)

所以,在切割圖片時,數(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)

python主要應(yīng)用領(lǐng)域有哪些

1、云計算,典型應(yīng)用OpenStack。2、WEB前端開發(fā),眾多大型網(wǎng)站均為Python開發(fā)。3.人工智能應(yīng)用,基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開python。4、系統(tǒng)運維工程項目,自動化運維的標(biāo)配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數(shù)據(jù)分析。

以上是“Python如何通過OpenCV的findContours獲取輪廓并切割”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI