我有不同图像的数据集。绘制省略号后,我想裁剪它们。
我画了椭圆形。实际的椭圆是蓝色的。绿色的是他们的角度0度的样子。
我正在使用numpy数组切片来获取裁剪后的图像:
output_image[y-(minor_axis/2):y+(minor_axis/2), x-(major_axis/2):x+(major_axis/2)]
然而,结果并非如此。例如,大椭圆看起来像椭圆的结果如下:
我首先想到它正在发生,因为我在numpy切片时使用角度。因此,我绘制了具有相同的其他长轴,短轴等值的角度为0度的绿色圆圈,但结果也与绿色圆圈不对应。
这里发生了什么?
答案 0 :(得分:0)
据我所知,从您发布的图像和单行代码中可以看出,问题在于您没有考虑椭圆的旋转。
如果椭圆的短轴与x轴精确对齐, y + (minor_axis / 2)
将仅对应于裁剪区域的顶部。但是,由于您的椭圆旋转了45度,情况并非如此。
你可以尝试根据椭圆的参数方程自行计算出边界框(例如,参见this post)。一个更简单的选择是让OpenCV完成工作,并使用cv2.boundingRect
获取边界框,如上面评论中提到的Miki。