java - 这段代码到 OpenCV Java 的翻译是什么?

标签 java c++ c opencv

这段代码是 OpenCV c++:

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

新的 Java Api 中的通讯器是什么?我无法获取 CvPoint2D32fcvGetSeqElemCV_AA。我发现它存在于 JavaCV 中,但在 OpenCV Java api 中找不到它们。

谢谢

编辑:

我已经更改了我的代码,现在我有:

MatOfPoint3 circles = new MatOfPoint3();
Imgproc.HoughCircles(image, circles, Imgproc.CV_HOUGH_GRADIENT,2, image.rows()/4,200,100,0,0);
for(Point3 circle : circles.toArray()){
     Point center = new Point(circle.x, circle.y);
     int radius = (int) Math.round(circle.z);      
     Core.circle(image, center, radius, new Scalar(0,255,0), 6, 8, 0);    
}

但是我在 for(Point3 circle : circles.toArray()) 处遇到错误:

Exception in thread "main" java.lang.UnsupportedOperationException: Mat data type is not compatible: 21
     at org.opencv.core.Mat.get(Mat.java:2581)
     at org.opencv.core.MatOfPoint3.toArray(MatOfPoint3.java:64)
     at org.opencv.core.MatOfPoint3.toList(MatOfPoint3.java:76)
     at main.java.DetectFaceDemo.run(HelloOpenCV.java:60)
at main.java.HelloOpenCV.main(HelloOpenCV.java:83)

对此有什么想法吗?谢谢

编辑 2:

上次编辑问题的解决方案在于 MatOfPoint3 圆圈 = new MatOfPoint3();

一定是 MatOfPoint3f 圆圈 = new MatOfPoint3f();

最佳答案

使用类 Point3。由其坐标 x、y 和 z 指定的 3D 点的模板类。该类的实例可与 C 结构 CvPoint2D32f 互换。与 Point_ 类似,3D 点的坐标可以转换为另一种类型。还支持 vector 算术和比较运算。

关于java - 这段代码到 OpenCV Java 的翻译是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515295/

相关文章:

c - 如何将 printf 中写入的值调用到另一个 printf

java - 如何使用 Java API 根据多个字段对 Elasticsearch 记录进行排序?

java - 正确调用反射API - Android

java - 如何使用 wicket 将大文件上传到 google cloud

c++ - 可以是 char*、long 或 int 的函数参数。是否可以?

C++ 套接字编程 Windows

java - Phaser 和 CyclicBarrier 的区别

c++ - 对象、右值引用、常量引用之间的重载解析

c - C 如何知道赋值后一个 char* 有多长?

c++ - 字符大小和 const void*