2012-07-06 2 views
4

현재 javacv에서 이미지 처리 프로젝트를 개발 중입니다. 그 점에서 나는 특정 다각형 내부에서 U 자형을 식별해야합니다.opencv/javacv를 사용하여 이미지에서 U 모양을 식별하는 방법은 무엇입니까?

이것은 두 가지 유형의 이미지이며 이미지에 U 자 모양 또는 U 자 모양이 있는지 여부를 식별해야합니다. 나는 많은 튜토리얼을 훑어 보았지만 이것을 명확히하기위한 적절한 가이드 라인을 찾을 수 없었다. 그러니 전문가가이 문제를 명확히 할 수있는 도움을 주시기 바랍니다. opencv 또는 javacv를 사용하여 몇 가지 코드 예제를 제공 할 수 있다면 정말 감사하겠습니다. Image with single U shape

답변

4

모든 이미지는 유사한 패턴이있는 경우

Image with two U shape

, 당신은 단순히 그들을 필터링 윤곽의 경계 RECT의 가로 세로 비율 (너비/높이)를 사용합니다. 모든 윤곽의 RECT를 경계 찾을 경우

즉, 외형 다음은 10 개 이상

의 가로 _ 세로 _ 비율이있을 것이다 1.

그러나 U 자형에 가까운 가로 _ 세로 _ 비율을 파이썬 코드가있다 : 아래

import cv2 
import numpy as np 

img = cv2.imread('sofud.jpg') 

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

ret,thresh = cv2.threshold(gray,127,255,1) 

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) 

for cnt in contours: 
    x,y,w,h = cv2.boundingRect(cnt) 
    if 10 < w/float(h) or w/float(h) < 0.1: 
     cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2) 


cv2.imshow('res',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

결과는 다음과 같습니다

enter image description here

enter image description here

+0

코드 윤곽선에서 선택된 윤곽선으로 직사각형을 그리셨습니까? –

+0

은 "boundingrect"를 사용하여 윤곽의 사각형 매개 변수를 처음 발견했습니다. 그런 다음 "직사각형"을 사용하여 그립니다. –

관련 문제