다음 코드를 사용하여 선을 '측정'하기 위해 폴리 라인 모서리를 감지하려고합니다. 코너 위치에 흰색 반점에서OpenCV에서 해리스 코너 감지 및 로컬라이제이션
cornerimg = cv2.cornerHarris(gray, # src
2, # blockSize
3, # ksize/aperture
0.04 # k
# dst
# borderType
)
# ?
cornerimg = cv2.normalize( cornerimg, # src
None, # dst
0, # alpha
255, # beta
cv2.NORM_MINMAX, # norm type
cv2.CV_32FC1, # dtype
None # mask
)
# ?
cornerimg = cv2.convertScaleAbs(cornerimg)
cornershow = cornerimg.copy()
# iterate over pixels to get corner positions
w, h = gray.shape
for y in range(0, h):
for x in range (0, w):
#harris = cv2.cv.Get2D(cv2.cv.fromarray(cornerimg), y, x)
#if harris[0] > 10e-06:
if cornerimg[x,y] > 64:
print("corner at ", x, y)
cv2.circle(cornershow, # dest
(x,y), # pos
4, # radius
(115,0,25) # color
)
cv2.imshow('harris cornerimg', cornershow)
원래 코드의 결과와 수준은 "corneryness"의 지표가 될 것 같다 : 코드는 어디 선가 on SO 발견 cv2.cornerHarris() 기반으로하는 조각을 기반으로합니다. (cv2를 사용하도록 업데이트 된) 스 니펫은 결과 이미지를 반복하고 어떤 이유로 10e-06보다 큰 값을 검색하므로이를 이미지의 밝기이어야한다고 생각하는 비교로 바꿨습니다.
그러나 그 위치에서 그려지는 원은 정규화 된 해리스 출력에서 발견 된 실제 핫스팟 근처에 없습니다.
내가 뭘 잘못하고 있니?
또는 cv2.goodFeaturesToTrack()은 해리스 (useHarrisDetector = true)를 사용하도록 설정 될 수 있지만 cornerHarris 제대로 감지로 보이는 발생하지 않습니다 그것을 사용하는 내 시도 :에 해당하는 함수 호출이 될 것입니다 무엇
cv2.goodFeaturesToTrack( blurred, # img
500, # maxCorners
0.03, # qualityLevel
10, # minDistance
None, # corners,
None, # mask,
2, # blockSize,
useHarrisDetector=True, # useHarrisDetector,
k=0.04 # k
)
cv2.cornerHarris()?
당신의 결과 이미지를 추가하고 무엇이 잘못되었는지를 설명하려고하시기 바랍니다. –