Contours : More Functions
1 凸缺陷對象上的任何凹陷都被成為凸缺陷.cv.convexityDefects()
hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull)
它返回一個數組,其中每一行包含這些值 - [起點,終點,最遠點,到最遠點的近似距離]
NOTE:
必須在找到凸包時傳遞returnPoints = False,以便找到凸起缺陷.
代碼:
import cv2 import numpy as np img = cv2.imread("img7.png") img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(img_gray, 127, 255,0) im2,contours,hierarchy = cv2.findContours(thresh,2,1) cnt = contours[0] hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start = tuple(cnt[s][0]) end = tuple(cnt[e][0]) far = tuple(cnt[f][0]) cv2.line(img,start,end,[0,255,0],2) cv2.circle(img,far,5,[0,0,255],-1) cv2.imshow("img",img) cv2.waitKey(0) cv2.destroyAllWindows()2 PointPolygonTest
此功能可查找圖像中的點與輪廓之間的最短距離. 當點在輪廓外時返回負值,當點在內部時返回正值,如果點在輪廓上則返回零.
我們可以檢查點(50,50)如下:
dist = cv2.pointPolygonTest(cnt,(50,50),True)
在函數中,第三個參數是measureDist。 如果為True,則查找簽名距離. 如果為False,則查找該點是在內部還是外部或在輪廓上(它分別返回+1,-1,0)
NOTE
果您不想找到距離,請確保第三個參數為False,因為這是一個耗時的過程. 因此,將其設為False可提供2-3倍的加速.
OpenCV附帶了一個函數cv2.matchShapes(),它使我們能夠比較兩個形狀或兩個輪廓,并返回一個顯示相似性的度量。 結果越低,匹配就越好.它是根據hu-moment值計算的.
代碼:
import cv2 import numpy as np img = cv2.imread("img7.png",0) img2 = cv2.imread("img9.png",0) ret, thresh = cv2.threshold(img, 127, 255,0) ret, thresh2 = cv2.threshold(img2, 127, 255,0) im2,contours,hierarchy = cv2.findContours(thresh,2,1) cnt1 = contours[0] im2,contours,hierarchy = cv2.findContours(thresh2,2,1) cnt2 = contours[0] ret = cv2.matchShapes(cnt1,cnt2,1,0.0) print( ret )
輸出:
0.09604402805803886
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42026.html
摘要:因此,邊界矩形的面積不會最小設,為矩形的左上角坐標,,為寬度和高度代碼最小外接矩形返回一個結構,其中包含以下,,,,畫上述矩形代碼最小封閉圈擬合橢圓擬合直線 Contour Features 1 圖像的矩 cv2.moments()圖像的矩可以幫助計算物體的某些特征,如對象的質心,對象的區域等. 代碼: import cv2 import numpy as np img = cv2...
摘要:最后,輪廓是輪廓的子節點,它們位于最后的層次結構級別。即對象的外部輪廓即其邊界放置在層次結構中對象內部的孔的輪廓如果有的話放在層次結構中用或標記了輪廓的順序和它們所屬的層次結構它檢索所有輪廓并創建完整的族層次結構列表。 Contours Hierarchy 1 層次結構 通常我們使用cv.findContours()函數來檢測圖像中的對象,有時對象位于不同的位置. 但在某些情況下,某...
閱讀 2400·2021-09-08 09:45
閱讀 3340·2021-09-08 09:45
閱讀 3097·2019-08-30 15:54
閱讀 3348·2019-08-26 13:54
閱讀 1405·2019-08-26 13:26
閱讀 1384·2019-08-26 13:23
閱讀 909·2019-08-23 17:57
閱讀 2178·2019-08-23 17:14