2011-05-11 103 views
1

我努力學習Python的圖像,這是第一個代碼,我已經寫了:試圖操縱使用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 

我嘗試使用「廉政」類型變量的圖像複製到他們,但是錯誤仍然存​​在,除了'bytes'對象不支持賦值,我得到'int'對象不支持賦值。我應該如何解決這個問題?

請注意這是一個灰度圖像,像素值範圍從0到255,我試圖在殼上打印數組圖像,它顯示了在這個範圍內的值。

回答

3

在Python bytes是不可變的。你不能改變它們,這就是爲什麼當你嘗試做項目分配時它會給你一個錯誤。您可以將您的不可變bytes對象轉換爲bytearray

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

好吧,試圖將它轉換爲bytesarray,得到以下錯誤:NameError:name'bytesarray'未定義, – Kedar 2011-05-11 07:06:01

+0

對不起,它是'bytearray'。我確實錯了。 – zeekay 2011-05-11 07:08:53

+0

非常感謝! 'int'對象也不支持賦值太..我應該將它轉換爲intarray ..因爲我可能不得不操作整數數組以及將來.. – Kedar 2011-05-11 07:21:04

3

如果你真的想要做圖像處理在Python,嘗試Python的圖像庫*(PIL)在這裏找到:http://www.pythonware.com/products/pil/

[* ]請記住,如果你使用這個庫,你將不得不使用Python 2.x而不是3.x,不幸的是目前很多功能強大的python庫都是如此。

+0

我只是想寫我的第一個代碼...但是如果我必須執行任何操作,請務必使用該庫..閱讀文檔..似乎非常有用..謝謝! – Kedar 2011-05-12 17:16:45