【问题标题】:How do I resize a picture with openCV to a fixed size without changing the original shape of the picture in python?python - 如何在不改变python中图片的原始形状的情况下将带有openCV的图片调整为固定大小?
【发布时间】:2020-01-04 17:23:34
【问题描述】:

我现在的情况是我有很多不同尺寸的图片,有些是 769x864 像素,有些是 2000x3123 像素,有些甚至是 3500x4000 像素。
我想使用 openCV 将所有图片的大小调整为特定的高度和宽度,或者至少接近给定的高度和宽度。
我知道cv2.resize() 函数,但问题是我如何定义一个固定尺寸,例如 800x900,而不改变原始图片的形状。

有人知道如何做到这一点吗?

【问题讨论】:

  • 使用输出/输入的维度之一计算 fx 或 fy 的比例因子。然后将该因子用于 fx 和 fy。结果将匹配一维并保持输入的纵横比。例如 fx=fy=output_width/input_width 或 fx=fy=output_height/input_height。如果您需要结果正好是 800x900,那么您必须填充结果或裁剪结果。
  • 您可能正在寻找“Seam Carving”,也称为“Liquid Rescaling”,请参阅en.m.wikipedia.org/wiki/Seam_carving

标签: python opencv image-processing resize


【解决方案1】:

填充可以做到这一点。

如果您的目标尺寸是 800*900,这意味着图像必须具有相同的比例 (8/9) 才能在不改变形状的情况下调整大小。

例如,如果原始图像的大小为:2400 * 2600,则应使用 100 像素填充列(例如,在每行边框添加 100 个零像素)以使图像为 2400*2700。然后,您可以将结果图像的大小调整为 800*900(比例因子为 1/3),而图像的形状不会发生任何变化。

【讨论】:

    【解决方案2】:

    如果我理解正确,您想缩小图片。 你可以这样做:

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
    

    您可以在此处找到更多详细信息和演示代码: https://www.tutorialkart.com/opencv/python/opencv-python-resize-image/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2020-07-04
      • 2019-04-14
      • 2018-08-08
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多