OpenCVでPythonでhereというアルゴリズムを実装しようとしています。私はOpenCVの初心者ですので、私と一緒にいらしてください。Python OpenCV Contourツリー階層
私は、無関係のエッジ境界を削除するアルゴリズムの一部を、内部の境界の数に基づいて実装しようとしています。
- 現在のエッジ境界が二つ以上の内縁の境界を持っている場合は、現在のエッジ境界が正確に1または2つの内部のエッジの境界、内部境界が
- を無視することができたならば、それは
イメージから抽出した輪郭のツリー構造を決定する際に問題があります。
私の現在の源:
import cv2
# Load the image
img = cv2.imread('test.png')
cv2.copyMakeBorder(img, 50,50,50,50,cv2.BORDER_CONSTANT, img, (255,255,255))
# Split out each channel
blue = cv2.split(img)[0]
green = cv2.split(img)[1]
red = cv2.split(img)[2]
# Run canny edge detection on each channel
blue_edges = cv2.Canny(blue, 1, 255)
green_edges = cv2.Canny(green, 1, 255)
red_edges = cv2.Canny(red, 1, 255)
# Join edges back into image
edges = blue_edges | green_edges | red_edges
# Find the contours
contours,hierarchy = cv2.findContours(edges.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# For each contour, find the bounding rectangle and draw it
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(edges,(x,y),(x+w,y+h),(200,200,200),2)
# Finally show the image
cv2.imshow('img',edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
私はRETR_TREEを使用すると、私の輪郭の素敵なネストされた配列を与えるだろうが、それはケースのように思われないと仮定しました。輪郭のツリー構造を取得するにはどうすればよいですか?
あなたはこの記事の階層についての詳細を見つけることができます。http://opencvpython.blogspot.com/2013/01/contours-5-hierarchy.html答えを –