降低图像分辨率

2024-04-26 22:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个图像,我需要减少它的分辨率,而不是在一个方法,而不是调整大小。我试图更改Dpi,但显然我的图像没有Dpi(我不知道这是否可行)。我想要我的低分辨率图像作为目标检测代码。此外,我尝试使用“GuassianBlur”等过滤器和其他图像处理方法来更好地进行检测,但是,我想要一个降低图像分辨率的解决方案

im = Image.open("car.png")
im.save("Dpi_test.png", dpi=(10, 10))

这是我用于dpi的代码,当我尝试使用此函数打印dpi时,它给了我KeyError:

print(im.info['dpi'])

有关更多信息,我希望获得以下结果:

单击here查看示例图像

任何关于如何降低图像分辨率的帮助都是非常好的!多谢各位

更新

关于我的问题,经过编辑澄清:在一位评论者的帮助下,他建议模糊和破坏我的形象,有人有办法做到这一点吗?我想这是和下采样有关的!你不确定

更新2!! 问题以两种方式回答,非常感谢


Tags: 方法代码图像image过滤器目标png分辨率
2条回答

使用PIL,我将图像缩小为缩略图,然后将其转换回原始大小:

from PIL import Image
im = Image.open("1jP94.png")
orig_size = im.size
print(orig_size)
display(im)

==> (142, 155)

enter image description here

im.thumbnail([32, 32])
display(im)

enter image description here

im = im.transform(orig_size, Image.EXTENT, (0,0, 32, 32))
display(im)

enter image description here

对于希望在OpenCV上实现此功能的用户:

使用PIL将图像缩小为缩略图,然后将其转换回原始大小(如上所述),除了将PIL图像转换为OpenCV图像外,这与上面的代码相同:

from PIL import Image
import numpy
import cv2

im = Image.open("image.png")
orig_size = im.size
print(orig_size)
open_cv_image = numpy.array(im)
open_cv_image = open_cv_image[:, :, ::-1].copy()
cv2.imshow("original", open_cv_image)
im.thumbnail([32, 32])
open_cv_image = numpy.array(im)
open_cv_image = open_cv_image[:, :, ::-1].copy()
cv2.imshow("thumbnail", open_cv_image)
im = im.transform(orig_size, Image.EXTENT, (0,0, 32, 32))
open_cv_image = numpy.array(im)
open_cv_image = open_cv_image[:, :, ::-1].copy()
cv2.imshow("result", open_cv_image)
cv2.waitKey(0)

相关问题 更多 >