2
我正在使用python openCV庫來獲取簡單圖像中的輪廓座標。據我所知,輪廓中點的順序將是findContour()方法返回的順序。OpenCV的findContours方法中的重複項
但findContour()返回的一組點重複其中。如果訂單保留,那麼如何有重複?
如何讀取輸出?
下面是代碼
import numpy as np
import cv2
from pylab import plot,show
from PIL import Image
def get_contours(im):
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
return im2, contours, hierarchy
def main():
im = cv2.imread('border.jpeg')
contour_image, contours, hierarchy = get_contours(im)
contour_points = []
for pt in contours[1]:
contour_points.append((pt[0][0],pt[0][1]))
plot(pt[0][0],pt[0][1])
if len(contour_points)!= len(set(contour_points)):
print "has_duplicates"
else:
print "no duplicates"
main()
Bu t根據你的箭頭標記,數組不應該以[2,1]結束。爲什麼該點只出現一次? – MaPY
@MadhuriPalagummi最後一條邊(在最後和第一個頂點之間)是隱式的(輪廓總是閉合的),所以頂點不會被重複。 (AFAIK沒有很好的記錄,但是從源代碼和經驗中得到證實) –
因此,除了第一點以外,每個點都應該列出兩次? 是嗎? – MaPY