2012-06-24 4 views
1

특정 이미지에서 원을 인식하는 코드를 발견했으며이 코드의 90 %를 javacv로 변환 할 수있었습니다. 하지만 불행히도 javacv로 다음 라인을 변환 할 수 없었다. 그래서 제발 내가 javacv 로이 라인을 변환하는 데 도움이 될 수 있습니까?제발 javacv에 opencv 코드를 변환하는 데 도움이 될 수 있습니까?

CvSeq circles = cvHoughCircles(gry, mem, CV_HOUGH_GRADIENT, 1, 40.0, 100, 100,0,0); 
cvCvtColor(canny, rgbcanny, CV_GRAY2BGR); 

for (int i = 0; i < circles->total; i++) 
{ 
// round the floats to an int 
float* p = (float*)cvGetSeqElem(circles, i); 
cv::Point center(cvRound(p[0]), cvRound(p[1])); 
int radius = cvRound(p[2]); 

// draw the circle center 
cvCircle(img, center, 3, CV_RGB(0,255,0), -1, 8, 0); 

// draw the circle outline 
cvCircle(img, center, radius+1, CV_RGB(0,0,255), 2, 8, 0); 

printf("x: %d y: %d r: %d\n",center.x,center.y, radius); 
} 

for 루프 내에서 5 개의 코드 행을 변환하는 방법을 알아야합니다. 귀하의 경험을 공유하기에 충분히 친절하십시오. 감사.

답변

2

글쎄, 난 당신을 위해 몇 가지 유용한 링크를 당신을 위해 코드를 변환하는 것 (나는 JavaCV를 모르는)하지만 여기 아니에요 :

  • Hints for Converting OpenCV C/C++ code to JavaCV을 - 이것은 당신이 읽어야 첫 번째 일이 .
  • JavaCV source code -이 보관 파일에는 파일 samples/HoughLines.java이 있습니다. 이는 repo에서 삭제 된 HoughCircles.java과 매우 유사합니다.
  • JavaCV examples -이 보관 파일은 OpenCV2_Cookbook/src/opencv2_cookbook/chapter07/ex4HoughCircles.scala입니다. 그리고 여기이 파일의 코드의 일부는 다음과 같습니다

// Draw lines on the canny contour image 
val colorDst = cvCreateImage(cvGetSize(src), src.depth(), 3) 
cvCvtColor(src, colorDst, CV_GRAY2BGR) 
for (i <- 0 until circles.total) { 
    val point = new CvPoint3D32f(cvGetSeqElem(circles, i)) 
    val center = cvPointFrom32f(new CvPoint2D32f(point.x, point.y)) 
    val radius = math.round(point.z) 
    cvCircle(colorDst, center, radius, CV_RGB(255, 0, 0), 1, CV_AA, 0) 
    print(point) 
} 
show(colorDst, "Hough Circles") 

이 정확하게 당신이 찾고있는 것입니다.

관련 문제