我正在研究Java中的OpenCV项目,我将不得不将椭圆转换为不同图片上的圆坐标。我通过使用findHomograpghy()函数来做这个,因为椭圆包含超过4的源点。目前我有一个Mat,它包含椭圆的点,另一个Mat包含一个圆的点。在图像中检测椭圆。圆圈是使用Imgproc.circle()创建的。
我基本上做了以下事情:
MatOfPoint source_mop = new MatOfPoint(blue_ellipse_contour);
MatOfPoint2f source_points = new MatOfPoint2f(source_mop.toArray());
MatOfPoint dest_mop = new MatOfPoint(cir_contour);
MatOfPoint2f dest_points = new MatOfPoint2f(dest_mop.toArray());
其中blue_ellipse_contour和cir_contour是填充的椭圆和圆。
source_points和dest_points的大小略有不同 1x3972 1x3976
我正在做以下事情:
Mat perspectiveMatrix = calib3d.findHomography(source_points,dest_points);
但是这会返回:
OpenCV错误:findHomography中的断言失败(src.checkVector(2)== dst.checkVector(2))
我认为这与尺寸不相同有关。但是我现在有点迷失如何从椭圆到圆圈实际找到变换矩阵?由于椭圆的大小和位置在不同的图像中会有所不同。
任何提示将不胜感激:)