6

JavaCV を使用して OpenCV で次の C++ ステートメントを作成する方法を知りたいです。

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

cvHoughCircles() を使用して検出された円の半径を取得します。明らかにJavaはポインターを使用しないため、Javaでこれを行う方法がわかりません。コンテキストを確認できるように、これまでに持っているコード:

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

1 に答える 1

6

JavaCPPは、C / C ++配列/ポインターをポインターオブジェクトにマップするため、C / C ++と同じ方法でアクセスできます。つまり、次のようになります。

FloatPointer p = new FloatPointer(cvGetSeqElem(circles, i));
int radius = Math.round(p.get(2));
于 2012-02-19T01:25:37.147 に答える