iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
AI & Data

AIoT的藍藥丸與紅藥丸,你選哪個?系列 第 46

Day 25:監弒器.WebCam的陰謀(Eye in the Sky: WebCam Intrigue)

  • 分享至 

  • xImage
  •  

前情提要

https://ithelp.ithome.com.tw/upload/images/20231010/201625016lUOOvL5R8.jpg
  在Day 25:DHT22的兩難.解密感測器中,你的室友們想要潛入女生宿舍送宵夜,還拉你下水,但當室友A──眼鏡仔破解門禁系統時,卻觸發了保護機制,結果你、眼鏡仔、毛帽男三人被困在一個女生房間裡。
  你在化妝包裡面找到一個長的像口紅的USB,接著用裡面的Python程式控制LED燈,結果發現房間裡有一個盆栽,上面的樹莓正閃爍著紅色亮光,裡面還有一條線連接到DHT22溫溼度感測器。
  眼鏡仔用筆電連接到Raspberry Pi 4上,看到程式碼裡有一個條件:如果溫度超過30度,且濕度超過80%,就會啟動一個繼電器。
  你們合力用打火機產生熱能,再用濕毛巾增加水分蒸發,結果成功觸發繼電器。你們發現這個繼電器連接到風扇的插頭,然後風扇開始緩緩轉動。

監弒器:WebCam的陰謀

  「原來,大漂亮用繼電器來控制風扇的開關!」眼鏡仔歡呼,「還可以自動調節風扇轉速噎。」
  但此時你們陷入膠著。你們不知道大漂亮引導你們找到盆栽、觸發繼電器、打開風扇之後,接下來該怎麼做。只好繼續尋找線索了。
  你在電風扇的後面發現一張紙條,於是你叫眼鏡仔和毛帽哥一起來看上面寫什麼。

恭喜你找到了我的提示!如果你想要逃出密室,跟我見面,就按照我的指示做吧!
首先,你們要用`WebCam`攝影機拍下照片,然後用`Python`程式把照片轉換成`ASCII`碼。
接著,你要用`GPIO4`接腳控制`LED`燈,讓它閃爍出`ASCII`碼。就可以得到下一個提示。
如果你們成功做到了,就代表你們是真心想認識我。我會在密室出口等你們。

  你們三個看完紙條後,眼鏡哥說:「難怪……我就覺得那個WebCam攝影機很可疑……我還在想,它是用來監視我們的嗎?還是用來幹嘛的?」
  「上面說要把照片轉換成ASCII碼欸?這是什麼?」
  「ASCII圖像是一種用文字符號來表示圖像的方法」眼鏡仔解釋,「就像是用字母和符號來畫出一張臉。」

   ,   ,
  (o,o)
   \_/
  -"-"-

  「感覺有點像日本的顏文字……」毛帽哥不小心笑出來。

ASCII密碼:WebCam的解鎖

  「太難了吧……大漂亮竟然設計了這麼一個燒腦的模仿遊戲……」你們差點暈倒,因為你們都覺得這個任務很難。你們三個人中,有兩個人很想要見到大漂亮,你是還好,比起見到大漂亮,你比較想要從這個鳥地方離開。你們達成共識,決定接受她的挑戰,按照她的指示做。
  你發現那張紙條的背面寫著Python的code:

pip install PIL numpy opencv-python

  「這是什麼意思?」你向眼鏡仔求救。
  「就是要先安裝一些Python模組,例如:PILnumpycv2。我們可以用pip指令來安裝。」
  「Python模組……?PILnumpycv2……?那些是什麼?」你聽得頭昏眼花。
  「Python模組就像是一些工具箱,裡面有很多方便的工具,可以幫我們完成不同的任務。」眼鏡仔解釋,「pip指令就像是一個快遞送貨員,可以把這些工具箱送到我們的電腦上。」
  「那PILnumpycv2呢?」
  「PIL模組可以幫我們處理圖片檔案。」毛帽哥說,「numpy模組可以幫我們處理數字和矩陣。」
  「對啊,然後cv2模組可以幫我們用攝影機和影像處理。」
  「那cv2模組要用來做什麼?」你問。」
  「cv2模組就像是攝影師,可以幫我們拍要轉換成ASCII圖像的照片。」眼鏡仔解釋,「我們要用cv2模組來打開WebCam攝影機,然後拍一張照片。」

#引入cv2模組 就像是打開工具箱
import cv2 
#建立一個VideoCapture物件 就像是拿出攝影機
#參數0表示使用第一個攝影機
cap = cv2.VideoCapture(0)
#讀取一偵影像 就像是按下快門
#ret是布林值 表示是否成功讀取 frame是影像資料
ret, frame = cap.read()
#釋放VideoCapture物件 就像是關掉攝影機
cap.release()
#把frame影像資料儲存成image圖片檔 就像是把照片印出來
cv2.imwrite("webcam.jpg", frame)

  「然後用PIL模組來讀取剛剛儲存的照片,並且調整大小和灰階化。」眼鏡哥繼續說,「最後,我們要用numpy模組來把灰階圖像轉換成ASCII碼。」


上一篇
Day 25:DHT22的兩難.解密感測器(DHT22 Dilemma: Sensor Secrets)
下一篇
ASCII密碼:WebCam的解鎖(ASCII Code: WebCam Unlock)
系列文
AIoT的藍藥丸與紅藥丸,你選哪個?62
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言