Kunt u iemand helpen bij het converteren van opencv-code naar javacv?

Ik heb een code gevonden die cirkels in het bijzonder beeld herkent en ik kon 90% van die code in javacv omzetten. Maar helaas kon ik de volgende regels niet omzetten naar javacv. Dus alsjeblieft kan iemand me helpen om deze regels om te zetten in javacv?

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);
} 

Ik moet alleen weten hoe ik 5 coderegels moet converteren die in de for-lus zitten. Wees alsjeblieft zo vriendelijk om je ervaring te delen. Bedankt.

1

1 antwoord

Welnu, ik ga die code niet voor u omzetten (ik ken geen JavaCV), maar hier zijn enkele nuttige links voor u:


// 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")

Dit is precies wat u zoekt.

2
toegevoegd