원검출은 저번 포스팅에서의 사각형검출과는 다르게 이미 구현된 함수를 사용하였다.
바로 허프변환으로 나타난 cvHoughCircles라는 함수이다!
이함수는 gray scale한 영상에서의 윤곽선중 원형인 모양을 골라주는 역할을 한다.
코드는 다음과같이 간단하다.
먼저 gray scale 영상을 smoothing 시킨다.
허프변환한 시퀀스를 원형이 영상에서 나타내게되면 원형의 모습으로 나타나게 바로 설정하였다.
1
2
3
4
5
6
|
cvSmooth(gray, gray, CV_GAUSSIAN, 5, 5); //스무딩
Circle = cvHoughCircles(gray, storage_circle, CV_HOUGH_GRADIENT, 1, 10, 200, 25, 4, 15); //스무딩하게만든 grayscale영상에서 원을 찾음
for (int k = 0; k < Circle->total; k++){
circle = (float*)cvGetSeqElem(Circle, k);
cvCircle(frame, cvPoint(cvRound(circle[0]), cvRound(circle[1])), cvRound(circle[2]), CV_RGB(k * 30, k * 60, k * 60), 3, 8, 0);
}
| cs |
하지만 사람이 두는 돌은 흑돌이고 흰돌은 인식하지 못하게해야하므로 흑돌만 인식해야한다.
이내용에대해서는 다음포스트에서 설명하겠다.
댓글 없음:
댓글 쓰기