python影像處理-像素操作換背景(上)

  • 2020 年 3 月 12 日
  • 筆記

前言

本系列課程是針對無基礎的,爭取用簡單明了的語言來講解,學習前需要具備基本的電腦操作能力,準備一個已安裝python環境的電腦。如果覺得好可以分享轉發,有問題的地方也歡迎指出,在此先行謝過。

背景

以前玩樂高的時候,發現大顆粒裡面有很多人仔,想著把它們拍下來當素材,但是又沒有專業的設備,只能用手機拍攝,但是手機拍攝發現會留下陰影,後來想著用python嘗試著處理了一下,把背景變成了白色的了,總體看上去還不錯。

之所以可以處理陰影,是因為前景人物和背景白色區別比較明顯,經過這次嘗試後,發現既然可以處理這樣的純背景的,那給他換一個背景應該也是可以的,下面就是我的嘗試過程。

知識準備

進行圖片處理之前,我們首先得對圖片的色彩模式有個了解,這裡暫時介紹RGBA和RGB兩種模式,RGB是(red,green,blue)三種顏色的首字母組合一起的,RGBA是在三種顏色之上在加了一個透明通道(Alpha)。

畫畫的時候,通過調整不同顏料的比例,就可以得到不同的顏色;圖片的色彩也是同樣的原理,RGB顏色模式的圖片可以理解為由紅色,綠色,藍色三種顏色混合而成。

RGBA除了顏色混合之外,還具有了透明的功能,比如半透明你就能看到當前內容的下面的內容了。

獲取圖片顏色模式和像素值

打開本地的yezi.jpg圖片,通過mode屬性可以獲取到圖片的顏色模式,使用convert方法可以對其進行顏色模式的轉換。

通過img.size獲取圖片大小,寬959,高959個像素,這裡的像素你可以理解成1個小格子,整張圖片你可以看成寬和高為959*959的大網格。通過getpixel方法可以獲取圖片上某點的像素,也就是網格像素。結果可以看出RGB格式的img圖片是三個255這個其實就是個白點,img2是RGBA模式,後面的255表示完全不透明。

具體理解可以看下面的圖片。

找到一個調色板,可以看見右下角通過不同的顏色組合是可以實現不同的效果的,三個 0 是黑色,3個255是白色。

更改圖片的像素值

通過使用putpixel方法將原來100,100位置的白色像素點設置為黑色的了,通過列印和查看圖片效果可以知道。

畫一條黑線

這裡通過循環的方式將一小片區域的像素都更改了,所以看上去就會有一條黑線了。