为什么我的图像没有被正确裁剪?

时间:2015-08-22 12:33:47

标签: python opencv numpy

我有不同图像的数据集。绘制省略号后,我想裁剪它们。

我画了椭圆形。实际的椭圆是蓝色的。绿色的是他们的角度0度的样子。

我正在使用numpy数组切片来获取裁剪后的图像:

output_image[y-(minor_axis/2):y+(minor_axis/2), x-(major_axis/2):x+(major_axis/2)]

然而,结果并非如此。例如,大椭圆看起来像椭圆的结果如下:

我首先想到它正在发生,因为我在numpy切片时使用角度。因此,我绘制了具有相同的其他长轴,短轴等值的角度为0度的绿色圆圈,但结果也与绿色圆圈不对应。

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

据我所知,从您发布的图像和单行代码中可以看出,问题在于您没有考虑椭圆的旋转。

如果椭圆的短轴与x轴精确对齐,

y + (minor_axis / 2)将仅对应于裁剪区域的顶部。但是,由于您的椭圆旋转了45度,情况并非如此。

可以尝试根据椭圆的参数方程自行计算出边界框(例如,参见this post)。一个更简单的选择是让OpenCV完成工作,并使用cv2.boundingRect获取边界框,如上面评论中提到的Miki。