亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更改圖像中像素的值

更改圖像中像素的值

嚕嚕噠 2021-09-28 21:23:55
我正在使用速記。我需要在圖像的像素中隱藏數據。但是當我嘗試更新像素值時出現問題。我試過下面的代碼:from PIL import Imageim = Image.open('./data/frame398.png')pix = im.load()r, g, b = pix[200,200]print("Pre RGB")print(r, g, b)pix[200,200] = 0,0,0  它應該將像素的值更改為 (0,0,0)。但事實并非如此。如果我嘗試下面的代碼:imx = Image.open('./data/frame398.png')pixx = imx.load()r, g, b = pixx[200,200]print("Post RGB")print(r, g, b)我得到以下輸出:Pre RGB69 62 65Post RGB69 62 65我得到的不是 (0,0,0) 而是舊值。我做錯了什么?我需要幫助。謝謝
查看完整描述

4 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

您已成功更改圖像,但如果您想再次讀取它,則需要將其寫入文件:

要保存到相同的圖像文件,只需執行

im.save('./data/frame398.png', ‘PNG’)


查看完整回答
反對 回復 2021-09-28
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

當你做


r, g, b = pixx[200,200]


您正在從元組或數組中卸載像素值。所以你最好的選擇是


pixel[200,200] = (0, 0, 0)

#or

pixel[200,200] = [0, 0, 0]


查看完整回答
反對 回復 2021-09-28
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

正如@chthonicdaemon在回答中提到的,您實際上需要使用 Image.save() 保存法師。


其次,如果您想使用像素值,最好將加載的圖像轉換為 numpy 數組,例如,


import numpy as np

im = Image.open('./data/frame398.png')

im = np.array(im)

這使得像素操作更簡單,只需注意創建原始圖像的副本,例如,


im = np.array(im)

im = im.copy()

如果有時未制作副本,python 不允許分配直接值。


之后,您可以輕松更改單個值,例如,


im[0, 0, 0] = 255 # Complete RED

im[0, 0, 1] = 0 # No green

im[0, 0, 2] = 0 # No blue

至于保存圖像,它也非常簡單,例如,


Image.fromarray(im).save('name_of_file.png', 'PNG')

我們也獲得了類似的隱寫術任務,如果你有興趣可以在這里查看完整的代碼。


查看完整回答
反對 回復 2021-09-28
  • 4 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號