[解決済み] 'tuple' オブジェクトはアイテムの割り当てをサポートしていません。
2022-02-06 06:03:53
質問
PILライブラリを使用しています。
私は画像をより赤く見せようとしているのですが、こんな感じです。
from PIL import Image
image = Image.open('balloon.jpg')
pixels = list(image.getdata())
for pixel in pixels:
pixel[0] = pixel[0] + 20
image.putdata(pixels)
image.save('new.bmp')
しかし、このようなエラーが発生します。
TypeError: 'tuple' object does not support item assignment
どうすればいいですか?
PILの画素はタプルであり、タプルは不変である。新しいタプルを構築する必要があります。そこで、forループの代わりに、こうする。
pixels = [(pixel[0] + 20, pixel[1], pixel[2]) for pixel in pixels]
image.putdata(pixels)
また、すでに赤すぎるピクセルの場合、20を加えると値がオーバーフローしてしまいます。おそらく、次のようなものが必要でしょう。
min(pixel[0] + 20, 255)
または
int(255 * (pixel[0] / 255.) ** 0.9)
ではなく
pixel[0] + 20
.
また、さまざまな形式の画像を扱えるようにするために、次のようにします。
image = image.convert("RGB")
画像を開いた後 その
変換
メソッドは、ピクセルが常に (r, g, b) タプルであることを保証します。
関連
-
Python Decorator 練習問題
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PythonによるExcelファイルの一括操作の説明
-
Python 入出力と高次代入の基礎知識
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み] Pythonでリストをタプルに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない