如何在不使用外部模块的情况下在Python中打开/创建图像

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (138)

我有一个使用OpenCV打开图像文件(.png或.ppm)的python脚本,然后将所有RGB值加载到多维Python数组(或列表)中,仅在Python数组上执行一些逐像素计算(OpenCV是此阶段根本不使用),然后使用新创建的数组(包含新的RGB值)再次使用OpenCV写入新的图像文件(此处为.png)。在这个脚本中根本没有使用Numpy。该程序工作正常。

问题是如何在不使用任何外部库的情况下执行此操作,无论它们是否用于图像处理(例如OpenCV,Numpy,Scipy,Pillow等)。总而言之,我需要使用裸机Python的内部模块来:1。打开图像并读取RGB值,然后2.从预先计算的RGB值中写入新图像。为此目的,我将使用Pypy而不是CPython来加快速度。注意:如果重要的话,我使用的是Windows 10。

提问于
用户回答回答于

使用简单的.ppm文件是微不足道的:你有三行文本(P6,“宽度高度” 255),然后你有3*width*heightRGB 的字节。只要您不需要更复杂的.ppm格式变体,就可以用5行代码编写一个加载器和一个保护程序。

用户回答回答于

你可以在PPM没有OpenCVnumpy或任何讨厌你的东西的情况下编写这样的文件: -

import array
width,height = 800,600

PPMheader = 'P6\n' +str(width) + ' ' +str(height) + '\n255\n'

# Create and fill a red PPM image
image = array.array('B', [255, 0, 0] * width * height)

# Save as PPM image
with open('result.ppm', 'wb') as f:
   f.write(bytearray(PPMheader, 'ascii'))
   image.tofile(f)

使用终端中的ImageMagick将PPM转换为PNG或JPEG :

convert result.ppm -auto-level image.png

要么:

convert result.ppm -resize 1024x768 image.jpg

同样,使用终端中的ImageMagick将JPEG转换为PPM :

convert image.jpg -depth 8 image.ppm

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励