溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-05-22 14:08:56 來源:億速云 閱讀:741 作者:小新 欄目:開發技術

這篇文章主要介紹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)

python主要應用領域有哪些

1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女