Domanda

Voglio sapere come costruire la seguente istruzione C ++ in OpenCV usando JavaCV:

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

Per ottenere il raggio di un cerchio rilevato usando cvhoughCircles (). Ovviamente Java non usa il puntatore, quindi non ho idea di come farlo in Java. Il codice che ho finora in modo che tu possa vederlo contesto:

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);
}
È stato utile?

Soluzione

Javacpp maps c/c ++ array/puntatori agli oggetti puntatore, quindi noi Potere Accedilo allo stesso modo di C/C ++, cioè:

FloatPointer p = new FloatPointer(cvGetSeqElem(circles, i));
int radius = Math.round(p.get(2));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top