更多

    樹莓派 × MICRO:BIT SELFIE 自拍站(四)

    組裝及測試的部分完成,與過往習作相同,今期是撰寫程式的部分。今次的程式碼較多,同學也可嘗試理解程式碼結構,首段是載入程式,接著是定義,然後是程式運行。現在就用上述概念,來撰寫今次的習作。

    最後的步驟便是要編寫 Python 程式,使習作可以整合起來。在樹莓派中建立一個新的 Python 程式,檔案命名為 selfie.py 。

    編寫 Python 程式進行拍攝

    selfie.py 程式碼,並將下列編碼寫在檔案中:

    [row][double_paragraph]

    selfie.py 程式碼
    selfie.py 程式碼

    [/double_paragraph][double_paragraph]

    行數 1-4 :載入所需要用的 Library ,當中包括 gpiozero、
    picamera 、 PIL( Python Imaging Library 圖像處
    理)、gmtime (提取時間資料)、及 strftime (將
    時間資料轉化為字符串)。
     行數 5-7 :建立一個新的 camera 物件, 尺寸設定為
    800×400 像素,並開始進行預覽。
     行數 8-9 :設定兩個按鈕,分別接駁到 GPIO20 及 GPIO21 ,
    pull up 狀態設為「否」,因為在 gpiozero Library
    中,GPIO 的狀態是預設為 pull up ,即處於高位。
    我們需要先將這個狀態設定為「否」,這樣才配
    合我們在較早前為 Micro:bit 編寫的控制方法。
     行數 10 :建立道具相片 props 並且將 beard.png 載入。
     行數 11-14 :建立一個新的圖層 pad ,其尺寸是按剛才載入的
    相片 beard.png 而設定。在 PIL 的 Library 中,尺寸
    的基本單位是 32×16 像素,然後進行 12 及 13 行的
    操作。
     行數 15 :將圖層 pad 放在圖像 props 之下,並以座標
    ( 0,0 )為基點。
     行數 16-18 :將拍攝到的圖像和道具相片結合一起作預覽,透
    明度設定為 58 圖層編號設定為 3 ,即是在拍攝圖
    像之上層。
     行數 19-26 :定義一個t akePhoto 的函數(讀者請注意,行數 20
    至 22 是一整行編碼,不要將它換行輸入),當中
    使用 gmtime 功能,取得時間資料,並將資料轉化
    為字串,再加上路徑的資料,並儲存到 output 變量
    中。最後將拍攝到的圖像和道具相片結合一起,
    並儲存在 output 的路徑及其檔案名稱中。
     行數 26-27 :定義一個 stop 的函數,可以令拍攝站停止運作。
     行數 28-29 :當按鈕 btn_takePhoto 和 btn_stop 按下的時候,就
    會分別呼叫 takePhoto 和 stop 的函數進行運作。

    [/double_paragraph] [/row]

    製作拍攝站支架

    最後的階段是製作習作製作支架,為自拍站包裝一下。支架主要是用 2 吋 × 1 吋的木方建造出來,配合電鑽和螺絲,就能夠輕易地將整個支架裝嵌起來。

    [row][double_paragraph]

    跟著將顯示屏以倒轉的方式,固定在支架上,再將其他電線及藍莓派等的硬件放在顯示屏後面。
    跟著將顯示屏以倒轉的方式,固定在支架上,再將其他電線及藍莓派等的硬件放在顯示屏後面。

    [/double_paragraph][double_paragraph]

    完成習作的整個設計。
    完成習作的整個設計。

    [/double_paragraph] [/row]

    測試時,拍攝出來的合成照片。
    測試時,拍攝出來的合成照片。

    總結

    雖然在上述介紹的自拍站中,只有一張道具相片,但其實讀者可以建立一個道具相片庫,讓用家選擇不同的道具相片,為自己拍攝相片加上特色,讀者不妨自行到 raspberrypi.org ,就可以找到更加詳細的習作描述。另外,在操控方面,讀者亦可以自製不同款式的按鈕,再接駁至樹莓派的 GPIO ,製作簡單之餘亦可以發揮創客的精神。

    您會感興趣的內容

    相關文章