2011-11-08 5 views
5

OpenCV 프로그래밍을 배우기 시작했습니다. OpenCV에서 라인과 커브를 어떻게 식별 할 수 있습니까? 내 문제는 이미지에 볼록 또는 오목 (수평 또는 수직 커브) 커브, 수직, 대각선 또는 수평선이 있는지 식별해야한다는 것입니다.OpenCV 라인 및 곡선 확인

제 코드에서는 이미지의 특정 부분을 취하기 위해 CvSetImageROI을 사용했으며, 그 다음이 라인/커브에 따라 각각을 식별하려고합니다.

OpenCV에서 사용할 수있는 기능이 있습니까? 도움을 주셔서 대단히 감사합니다. 그건 그렇고, 나는 리눅스와 C++을 사용하고있다.

+0

이미지에서 곡선을 식별하는 방법을 찾으십시오. –

답변

5

허프 변환 http://en.wikipedia.org/wiki/Hough_transform, http://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm 이 표준 방법입니다. OpenCV에서 구현 된 간단한 형태로 임의 선 위치와 각도 및 선분을 감지 할 수 있습니다. 예를 들어 곡선 http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html?highlight=hough#houghlinesp

여기

봐, 검출 처리는 조금 더 복잡하다, 당신은 일반적으로 호우가 그것을 변환 필요가있다하지 OCV에서 아직 사용할 수 있지만 운동으로 쓸 수 있습니다 또는 좋은 구현을 찾으십시오. http://en.wikipedia.org/wiki/Generalised_Hough_transform에 설명되어 있습니다 (간단히)

+3

Canny()와 FindContours()도보실 수 있습니다 – Adrian

+0

각도를 어떻게 확인할 수 있습니까? 매개 변수에서 그 값을 구할 수 있습니까? 고마워요! – cmsl

+0

허프 (Hough) 변형은 각도와 절편 (사용자가 고전적인 경우)과 세그먼트 끝점 (확률적인 경우)을 반환합니다. 끝 점에서 간단한 기하학 계산으로 각도를 추출하거나 클래식 변환을 사용할 수 있습니다. 위의 링크에서 OpenCV 문서 및 예제를 확인하십시오. – Sam