2012-02-18 12 views
6

Chcę wiedzieć, jak skonstruować następujące oświadczenie w C++ przy użyciu OpenCV JavaCV:Odpowiednik rachunku OpenCV w języku Java z wykorzystaniem JavaCV

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

Aby uzyskać promień okręgu wykrywane przy użyciu cvHoughCircles(). Oczywiście Java nie używa wskaźnika, więc nie mam pojęcia, jak to zrobić w Javie. Kod mam tak daleko więc można zobaczyć go kontekstu:

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

Odpowiedz

6

JavaCPP mapuje tablic/wskaźniki C/C++ do obiektów wskaźnik, więc może dostęp go w taki sam sposób, jak w C/C++, czyli :

FloatPointer p = new FloatPointer(cvGetSeqElem(circles, i)); 
int radius = Math.round(p.get(2)); 
Powiązane problemy