Я пытаюсь изучить 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", скопировав изображение в них, однако ошибка сохраняется, но вместо объекта "bytes" не поддерживается назначение, я получаю объект "int" не поддерживает назначение. Как мне решить эту проблему?
Обратите внимание, что это изображение в градациях серого, а значения пикселей варьируются от 0 до 255, я попытался напечатать изображение массива на оболочке, и он показал мне значения в этом диапазоне.
Если вы действительно пытаетесь выполнить обработку изображений в Python, попробуйте найти Python Imaging Library * (PIL) здесь: http://www.pythonware.com/products/pil/
[*] Имейте в виду, что вам придется использовать Python 2.x в отличие от 3.x, если вы используете эту библиотеку, к сожалению, как в настоящее время имеет место множество мощных библиотек python.
В Python bytes
неизменяемы. Вы не можете их изменить, поэтому при попытке выполнить назначение пункта вы получите сообщение об ошибке. Вы можете преобразовать свой неизменный объект bytes
в bytearray
:
image = bytearray(image)
for i in range(1,256):
image[i]=0
bytearray
. Я сделал это опечатка.