我找到了一些可以识别特定图像中的圆圈的代码,并且能够将其中90%的代码转换为javacv。但不幸的是,我无法将以下行转换为javacv。因此,请有人可以帮助我将这些行转换为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);
}
我只需要知道如何在for循环内转换5条代码行。请好心分享您的经验。谢谢。
最佳答案
好吧,我不会为您转换代码(我不知道JavaCV),但是这里有一些有用的链接:
samples/HoughLines.java
。这与从回购中删除的HoughCircles.java
非常相似。 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")
这正是您想要的。
关于java - 请帮忙将opencv代码转换成javacv的帮助吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11175539/