Эквивалент заявления OpenCV в Java с использованием javacv

StackOverflow https://stackoverflow.com/questions/9344503

  •  27-10-2019
  •  | 
  •  

Вопрос

Я хочу знать, как построить следующий оператор C ++ в OpenCV, используя javacv:

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