【发布时间】:2017-11-22 20:52:17
【问题描述】:
我正在使用 python 3 和最新版本的 openCV。我正在尝试使用提供的调整大小功能调整图像大小,但调整大小后图像非常失真。代码:
import cv2
file = "/home/tanmay/Desktop/test_image.png"
img = cv2.imread(file , 0)
print(img.shape)
cv2.imshow('img' , img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyWindow('img')
resize_img = cv2.resize(img , (28 , 28))
cv2.imshow('img' , resize_img)
x = cv2.waitKey(0)
if x == 27:
cv2.destroyWindow('img')
原始图像为 480 x 640(RGB 因此我通过 0 使其变为灰度)
有什么办法可以调整它的大小并避免使用 OpenCV 或任何其他库的失真?我打算制作一个手写数字识别器,并且我已经使用 MNIST 数据训练了我的神经网络,因此我需要图像为 28x28。
【问题讨论】:
-
在没有任何失真的情况下,您有 2 个选项:a) 裁剪图像的一部分以使其具有相同的纵横比。 b) 将图像的一部分(例如黑色像素)添加到图像的两侧,使其具有相同的纵横比。如果您没有相同的纵横比,则无法在不失真的情况下获得它。
-
您必须确保您传递的新尺寸的纵横比与原始图像相同,并确保使用合适的插值方法
-
我在原始图像中添加了黑色像素以使其成为 640x640,但是当我调整它的大小时,我仍然得到一个扭曲的图像。我能做什么?
-
指定插值修复它。谢谢。
-
请确定您所看到的失真类型。不应该有几何变形。根据调整大小使用的方法,可能会有插值变化。
标签: python image python-3.x opencv