尝试使用Python处理图像

1 投票
2 回答
2204 浏览
提问于 2025-04-16 17:25

我正在学习Python,这是我写的第一段代码:

    #!/usr/bin/python
    # Filename: read_image.py


    f=open('1.raw','r+b')
    image=f.read()
    f.close()


    f=open('copy.raw','w+b')
    f.write(image)
    f.close()

    for i in range(1,256):
        image[i]=0

在第一部分,我只是把一个“.raw”格式的图像当作二进制文件读取,并制作了它的副本。这部分代码单独运行时没问题,执行后我得到了图像的副本。不过,我想对这个图像进行一些处理,首先我想把图像的第一行变黑,但我遇到了以下错误:

Traceback (most recent call last):
  File "C:/Python32/read_image.py", line 15, in <module>
    image[i]=0
TypeError: 'bytes' object does not support item assignment

我尝试使用'int'类型的变量,把图像复制到这些变量中,但错误依然存在,只是这次显示的是'int'对象不支持赋值。请问我该如何解决这个问题呢?

请注意,这是一幅灰度图像,像素值的范围是0到255,我在命令行上打印了这个数组,看到的值也在这个范围内。

2 个回答

3

在Python中,bytes是不可变的,也就是说你不能改变它们的内容。这就是为什么当你尝试去修改某个元素时会出现错误。你可以把这个不可变的bytes对象转换成一个bytearray

image = bytearray(image)
for i in range(1,256):
    image[i]=0
3

如果你真的想在Python中进行图像处理,可以试试这个叫做Python Imaging Library(PIL)的库,链接在这里:http://www.pythonware.com/products/pil/

[*] 不过要注意,如果你使用这个库的话,得用Python 2.x版本,而不是3.x版本。现在很多强大的Python库都是这样。

撰写回答