Raspberry Pi應用-相機模組(標準版 / 夜視版)|奧斯丁國際有限公司 OURSTEAM Internationl
icon教學資源
2022/01/17

Raspberry Pi應用-相機模組(標準版 / 夜視版)

介紹
 
學習如何將相機模組連接到樹莓派,擴充拍照、錄製影片的功能及應用圖像的效果。




所需項目
  • 附有連接相機模組端口的樹莓派主板
目前所有的樹莓派都附有連接相機模組的端口

注意:如果想使用樹莓派 Zero,會需要一片適合連接其小型端口的帶狀電纜。
樹莓派相機模組


相機模組有兩種版本:
 
 
  • 標準版:適合正常光線下拍照使用
  • 夜視版:無紅外線濾鏡,可搭配紅外線在黑暗中拍照

連接相機模組
  • 確認樹莓派已關機
  • 找到相機模組端口
  • 輕輕拉起端口塑膠夾的邊緣
  • 插入相機模組的排線;確認帶狀電纜底部的連接器朝向端口中的接觸點
  • 將塑膠夾推回定位
 
 
 
  • 啟動樹莓派
  • 回到主選單打開樹莓派配置工具(Raspberry Pi Configuration
  • 選擇 Interfaces 確認啟用Enabled鏡頭Camera):
  • 重新啟動樹莓派

使用指令控制相機模組

現在相機模組以連接完成,軟體也已啟用,請試著執行指令工具:raspistillraspivid
  • 點選欄位中的監控圖標打開終端窗口:
  • 輸入 raspistill -o Desktop/image.jpg 指令拍攝靜態照片並儲存至桌面:
  • 按下 Enter 運行指令

當指令運行時,可看到相機開啟預覽五秒後拍攝靜態照片。
 
  • 在桌面上找到圖片檔,連續點按兩下圖片檔即可打開圖片
 
 
也可利用 raspistill 新增不同的選項,改變圖像的大小和外觀。
  • 新增 -h-w 可改變圖像的高度和寬度:
raspistill -o Desktop/image-small.jpg -w 640 -h 480
  • 透過 raspivid 指令使用相機模組錄製影片:
raspivid -o Desktop/video.h264
  • 播放影片則需要雙擊桌面上的 video.h264 檔案圖標,將影片檔使用 VLC 媒體播放器打開

更多有關指令運用的相關訊息,請查閱 documentation for raspistill 以及 documentation for raspivid
 

使用 Python 控制相機模組

Python picamera 代碼庫有豐富的編碼用於操控相機模組,幫助您創建令人歎為觀止的專案。
  • 打開 Python 3 編輯器,例如:Thonny Python IDE
  •  新增檔案夾將其另存為 camera.py
注意:切勿將文件另存為 picamera.py
 
  • 輸入下列代碼:
  • 儲存並運行程序。相機應該要開啟預覽五秒鐘後再關閉。
注意:相機預覽僅在顯示器連接到樹莓派時才會作用。如果遠端操控(例如:SSH 或 VNC),則看不到相機預覽畫面。
 
  • 假如預覽畫面是顛倒的,可使用以下代碼將其旋轉 180 度:
 
圖像可旋轉 90180270 度。若要重置,請設定 rotation0 度。

最好將預覽畫面設定略為透明,以便查看時可檢查程序是否有錯誤。
 
  • 透過設定 alpha 的數值改變相機預覽畫面的透明度:
camera.start_preview(alpha=200)
 
alpha 的數值可以是 0255 間的任何數。
 


使用 Python 編碼拍攝靜態照片
  • 修改編碼,新增 camera.capture()
注意:拍攝前至少使用 sleep 等待兩秒,因為相機的感測器需要時間偵測光線值。
 
  • 運行編碼

您應該可以看見相機開啟預覽五秒鐘,接著拍攝一張靜態照片。拍攝照片時可看到預覽畫面會短暫調整為不同的分辨率。

新照片會保存至桌面。

 
  • 接下可新增一個循環,連續拍攝五張照片:
 
變量 i 用於計算循環運行的次數 0  。圖像以 image0.jpg, image1.jpg 儲存,以此推論。
 
  • 固定相機模組,再次運行編碼
 
相機模組應該要每五秒拍攝一張照片。拍完第五張照片後,將關閉預覽。
 
  • 查看桌面可找到五張新圖片
 

使用 Python 錄製影片
 
現在來錄製影片吧!
  • 刪除編碼 capture(),新增 start_recording() 及 stop_recording()
完成後編碼會如下圖所示:
  • 運行編碼
樹莓派應該會開啟預覽,並錄製 5 秒的影片後關閉預覽。
 


如何變更圖像設定及新增效果
 
Python picamera 軟體提供了許多可變更圖像的效果及設定。 
 
注意:有一部分設定只能使用在預覽畫面,無法用在拍攝的圖像;少部分只限圖像使用;其餘大部分是兩者都可使用。

設定圖像分辨率

可更改相機模組使用 resolution 拍攝的圖像

預設狀態下,圖像分辨率的設定為顯示器的分辨率。靜態照片的最大圖像分辨率為 2592×1944 ;影片則為 1920×1080。

使用下列編碼設定 resolution 為最大值拍攝圖像。
注意:需要將幀速率設定在 15 ,以啟用分辨率最大值。


最小分辨率為 64×64。
  • 嘗試以最小分辨率拍照
 
在圖像中新增文字

 
您可使用指令 annotate_text 在圖像中新增文字
  • 試試看運行下列代碼:

更改新增的文字
  • 使用代碼 camera.annotate_text_size = 50 變更文字大小:
您可以將文字大小設定在 6 160 間的任何值,預設大小為 32 

另外也可更改文字顏色。
  • 首先,新增 Color 到程式碼上方的 import 指令句裡:
from picamera import PiCamera, Color
  • 接著修改 import 指令句下方下方的編碼如下:

調整預覽畫面亮度

預覽畫面亮度預設為 50,您可以將其亮度設定在介於 0100 的任何值
  • 運行下列編碼測試看看:
 
  • 下圖的循環示範了如何調整亮度,並加入了顯示當前亮度值的文字:
 

更改預覽畫面的對比度

與變更畫面亮度相似,您也可以更改畫面的對比度。
  • 運行下列編碼試試看:
 
新增酷炫的特效

您可使用 camera.image_effect 製作特效。

圖像效果的選項有:
  • none
  • negative
  • solarize
  • sketch
  • denoise
  • emboss
  • oilpaint
  • hatch
  • gpen
  • pastel
  • watercolor
  • film
  • blur
  • saturation
  • colorswap
  • washedout
  • posterise
  • colorpoint
  • colorbalance
  • cartoon
  • deinterlace1
  • deinterlace2
預設的效果為 none
  • 選擇一張圖像利用下圖示範編碼試著製作特效:
  • 運行此編碼嘗試所有的圖像效果
 

 
設定圖像曝光模式

可使用 camera.exposure_mode 設定特定的曝光模式

曝光模式的選項有:
  • off
  • auto
  • night
  • nightpreview
  • backlight
  • spotlight
  • sports
  • snow
  • beach
  • verylong
  • fixedfps
  • antishake
  • fireworks
預設模式為 auto
  • 選擇其中一種曝光模式試試看:
  • 您可以使用 camera.EXPOSURE_MODES 加入循環,套用所有的曝光模式,就像圖片效果那樣
 
更改圖像白平衡

可使用 camera.awb_mode 將自動白平衡設定為預設模式。

可使用的自動白平衡模式有:
  • off
  • auto
  • sunlight
  • cloudy
  • shade
  • tungsten
  • fluorescent
  • incandescent
  • flash
  • horizon
預設為 auto
  • 選擇一項自動白平衡模式試試看:
  • 可使用代碼 camera.AWB_MODES 加入循環裡,套用所有自動白平衡模式,如同製作圖像效果那樣操作。
 

創意無限延伸

現在您已瞭解了如何應用相機模組,例如:
  • 運用 GPIO Zero Python 編碼新增可控制相機的按鈕
  • 將相機與 Minecraft Pi 結合
  • 自動將相機拍攝的照片發佈到 Twitter

嘗試下列相機模組專案,瞭解更多運用吧:

更多關於編寫相機模組的 Python 程式碼,請參考相關文件 picamera documentation
logo
iconiconiconiconicon
icon  電話:04-2375-3535
icon  傳真:04-2256-9949
icon  統編:90386785
icon  E-mail:service@oursteam.com.tw
icon  LINE ID:@oursteam
Inspire every child to create