这段代码到 OpenCV Java 的翻译是啥?

Posted

技术标签:

【中文标题】这段代码到 OpenCV Java 的翻译是啥?【英文标题】:What is the translation of this code to OpenCV Java?这段代码到 OpenCV Java 的翻译是什么? 【发布时间】:2013-10-22 10:29:15 【问题描述】:

这段代码是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 circles = new MatOfPoint3();

应该是 MatOfPoint3f circles = new MatOfPoint3f();

【问题讨论】:

【参考方案1】:

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

【讨论】:

那么cvGetSeqElemCV_AA 呢?我找不到他们。谢谢 猜我不需要cvGetSeqElem。我有这个: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, CV_AA, 0); 现在只有CV_AA 丢失了

以上是关于这段代码到 OpenCV Java 的翻译是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Python 相当于 Java 的标准 for 循环是啥?

从 Java 到 Oracle SQL 的翻译:将每个元素作为 SELECT 语句的结果使用到循环中[关闭]

Java中OpenCV中的KeyPoint和MatchDpoint是啥

C++ 代码翻译成 Java

基于OpenCV翻译Matlab代码

安卓系统中notificaion shade是啥