質問

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);
}
役に立ちましたか?

解決

JavaCppは、オブジェクトをポインターするためのC/C ++配列/ポインターをマップするので、 できる C/C ++と同じようにアクセスしてください。

FloatPointer p = new FloatPointer(cvGetSeqElem(circles, i));
int radius = Math.round(p.get(2));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top