【问题标题】:Why are my images not being cropped appropriately?为什么我的图像没有被正确裁剪?
【发布时间】:2015-08-22 12:33:47
【问题描述】:

我有一个不同图像的数据集。绘制椭圆后,我想裁剪它们。

我在上面画了椭圆。实际的椭圆是蓝色的。绿色的就是它们在 0 度角时的样子。

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

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

但是结果并不如应有的那样。例如大椭圆看起来像一个椭圆的结果如下:

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

这是怎么回事?

【问题讨论】:

  • 获取代表椭圆的RotatedRect中的boundingRect。
  • 不看你的代码就很难分辨
  • 实际上,你正在裁剪蓝色大椭圆的边界框(大约 45 度)
  • @imaluengo 看起来不像 - 如果是这样,那么它应该包括禁止停车标志的顶部
  • 请发布其余的代码,以便我们有足够的MWE。至少,您需要告诉我们x、y、minor_axis 和major_axis 的来源。

标签: python opencv numpy


【解决方案1】:

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

y + (minor_axis / 2) 仅在椭圆的短轴与 x 轴完全对齐的情况下对应于裁剪区域的顶部。但是,由于您的椭圆旋转了 45 度,因此情况并非如此。

您可以尝试根据椭圆的参数方程自己计算边界框(例如,请参阅this post)。一个更简单的选择是让 OpenCV 完成这项工作,并使用 cv2.boundingRect 获取边界框,正如 Miki 在上面的 cmets 中提到的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多