Question

Je veux savoir comment construire la déclaration ++ C suivante dans OpenCV en utilisant JavaCV:

float* p = (float*)cvGetSeqElem(circles, i);
int radius = cvRound(p[2]);

Pour obtenir le rayon d'un cercle détecté en utilisant cvHoughCircles (). Il est évident que Java ne pas utiliser le pointeur, donc je ne sais pas comment faire cela en Java. Le code que j'ai à ce jour pour que vous puissiez le voir contexte:

lines = cvHoughCircles(frame2, storage, CV_HOUGH_GRADIENT, 1, 50, 300, 60, 10, 600);
for (int i = 0; i < lines.total(); i++) {
    //Would like the code to go here
    CvPoint2D32f point = new CvPoint2D32f(cvGetSeqElem(lines, i));
    cvCircle(src, cvPoint((int)point.x(), (int)point.y()), 3, CvScalar.WHITE, -1, 8, 0);
    Point p = new Point((int)point.x(), (int)point.y());
    points.add(p);
}
Était-ce utile?

La solution

Cartes JavaCPP C / C ++ / tableaux pointeurs vers des objets pointeur, donc nous peut l'accès de la même manière que dans C / C ++, i.e.:.

FloatPointer p = new FloatPointer(cvGetSeqElem(circles, i));
int radius = Math.round(p.get(2));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top