看板 Python 關於我們 聯絡資訊
為瞭解slicing的color channels是怎麼回事,最簡單的方法就是先製作一張有RGB三色的圖片: https://i.meee.com.tw/33EcphL.jpg
再用skimage.io.imread()圖檔後,應該就能過濾掉紅、綠、藍色。結果發現: from skimage.io import imread, imsave img = imread('fig.jpg') test = img[:, :, 0] plt.imshow(test) https://i.meee.com.tw/kfJN1cK.png
紅色確實被濾掉了,但是怎麼底色和紅色方塊都變成黃色? (圖片背景色確定為白色而非透明) 有辦法套用紅色濾鏡並去掉黃色底色嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.127.80 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1766873948.A.82D.html ※ 編輯: dosiris (114.43.127.80 臺灣), 12/28/2025 09:37:13
Hsins: 因為他預設的 colormap (cmap) 是 viridis,所以過濾後就是 12/28 20:34
Hsins: 亮黃色,你該指定改用 gray 的 cmap。 12/28 20:34
Hsins: 關鍵字有給你了,要找到怎麼處理應該不難 12/28 20:34
dosiris: 謝謝! plt.imshow(test, cmap='gray') 確實就紅色塊和底 12/29 06:37
dosiris: 色正確變白 只是藍綠色塊也變灰階 我再試試其他cmap能否 12/29 06:38
dosiris: 讓藍綠色塊正確顯色 12/29 06:39
Hsins: 不是... 你的 source code 會讓 test 變成一個二維的陣列 12/29 14:50
Hsins: 他本來就是灰階的... 12/29 14:50
Hsins: 如果你要的是 "套紅色濾鏡" 類似紅色玻璃紙的效果,應該用 12/29 14:54
Hsins: img[:, :, 0] = 255 這邊的 0 是 R 通道 12/29 14:54
dosiris: 瞭解 謝謝分享 12/29 16:52
fragmentwing: 注意plt繪製圖片時 你給多頻道(三維陣列) 和單頻道( 02/01 18:35
fragmentwing: 二維陣列) 時繪製方式是不同的 02/01 18:35
fragmentwing: 要達到你要的效果 陣列必須保持在三維 不要的原色填 02/01 18:35
fragmentwing: 入0值 而不是省略維度 02/01 18:35