I 화살 다발이 OpenCV의 - 노하우 찾기 컨투어 (화살표) 방향
같은 이미지를 갖는다. 나는 이미지의 대부분의 화살표의 방향을 알아 내고 싶다.
나는 OpenCV의 일부 독서를했고, 내가 어느 정도 정확한 결과를 얻기 위해 관리 내 스크립트를 사용하여 folowing 코드
import numpy as np
import cv2
import math
img = cv2.imread('sample7.png')
height, width, channels = img.shape
img = cv2.resize(img, (width*8, height*8))
img = cv2.medianBlur(img,5)
imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,th1 = cv2.threshold(imgray,100,255,cv2.THRESH_BINARY)
edged=cv2.Canny(th1,127,200)
im2,contours,h = cv2.findContours(edged.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
(img2,cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
screenCnt=None
flag_t=False
flag_s=False
kot=[]
for c in cnts:
approx = cv2.approxPolyDP(c, 0.01*cv2.arcLength(c,True), True)
area = cv2.contourArea(c)
#print area
if int(len(approx)) > 8 and area > 600 and area < 1100:
anglelist=[]
cv2.drawContours(img, [approx], -1, (0, 255, 255), 1)
(x,y),(MA,ma),angle = cv2.fitEllipse(c)
print round(angle,-1)
kot.append(round(angle,-1))
d = {}
for elm in kot:
d[elm] = d.get(elm, 0) + 1
counts = [(j,i) for i,j in d.items()]
count, max_elm = max(counts)
print 'most common:'
print max_elm
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
마련. 문제는 화살표가 위 또는 아래, 왼쪽 또는 오른쪽으로 향하는 경우 동일한 결과를 얻는 것입니다. 화살표가 왼쪽 또는 오른쪽을 가리키고 있는지 어떻게 알 수 있습니까? 아래 그림의 두 경우 모두 90도 전후로 같은 결과를 얻습니다. 거이다
이것은 분명히 컴퓨터에서 생성 된 이미지입니다. 이미지를 생성 한 코드에서 더 많은 정보를 얻을 수 있다면 훨씬 더 앞서 나갈 수 있습니다. 아마도 추가 메타 데이터를 파일에 첨부 할 수 있습니다. 그러나 예, OpenCV는 많은 이미지 처리 기능을 갖추고 있습니다. 이미지 처리 만이 유일한 옵션 인 경우 시작하는 것이 좋습니다. –