【问题标题】:Is there an alternative to cv2.resize() in OpenCV for downscaling images?OpenCV 中是否有替代 cv2.resize() 用于缩小图像的方法?
【发布时间】:2022-08-12 00:12:48
【问题描述】:

我正在使用 OpenCV 和 Python 来处理图像以进行 AI 训练。我需要将图像缩小到 32×32 像素,但使用 cv2.resize() 时图像会显得过于嘈杂。看起来这个函数从图像的每个区域获取单个像素的值,但我需要每个区域的平均值,这样图像的噪点就会减少。 cv2.resize() 有替代品吗?我可以编写自己的函数,但我认为它不会很快。

  • 在 cv2.resize 中使用 cv2.INTER_AREA
  • cv2.INTER_AREA 处理像素块。块是减小图像大小所需的大小。因此,它是分配给输出图像的每个块中像素的平均值。对于您想要做的事情,结果应该更好。

标签: python opencv image-processing image-resizing


【解决方案1】:

正如您在cv2.resize documentation 中看到的那样,最后一个参数interpolation 决定了图像重新采样的方式。 另请参阅possible values for it

默认是cv2.INTER_LINEAR表示线性插值。当图像被下采样时,它会产生模糊/嘈杂的效果。

您可以尝试使用其他插值方法,看看结果是否更适合您的需求。
具体来说,我建议您尝试cv2.INTER_NEAREST选项。它将根据源中最近像素的颜色确定目标像素值。下采样的图像应该是像素化的,但不是模糊的。
另一种选择是cv2.INTER_AREA@fmw42's comment 中所述。

【讨论】:

  • @Tamino 欢迎来到 StackOverflow。如果答案解决了您的问题,您可以单击“✔”将其标记为可接受的答案。有了足够的代表,您还可以投票任何有用的答案(请参阅此处:stackoverflow.com/help/someone-answers)。
猜你喜欢
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多