我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195
利用ESP32-CAM來做智慧辨識一直是有趣的議題,目前使用ESP32CAM來做智慧辨識可分成以下幾種
- 在ESP32-CAM上做智慧辨識:這端受限ESP32記憶體及CPU速度,很難達成高速度的影像辨識運算
- 在雲端做智慧辨識:將ESP32CAM所獲取的影像上傳到智慧雲端平台做辨識後,將結果回傳,這種則可辨識較為精確,但網路傳輸則是另外須考量的問題。
- 利用近端智慧辨識:也就是在近端建立智慧平台,收集ESP32-CAM所傳來的影像,這樣影像不用上傳到雲端,在區域網路就可以辨識,也算一種折衷的邊緣運算,知名大師法蘭斯所用tensorflow.js外掛到ESP32-CAM內進行體態辨識也屬這類,主要是透過觀看影像的裝置進行運算,例如手機或電腦。
以往我也介紹了利用.net環境接取多台ESP32-CAM的影像進行分析(ESP32-CAM mpeg Video Stream 用.net接收並錄製影片檔 ),但智慧辨識的後台都是採用微軟Azure的AI Cognitive Service API進行智慧判斷。
這次參考網路文章,終於完成將ESP32-CAM接取到python後,用時下最流行的yolo v3物件辨識模型進行分析。
要完成本次操作,請先閱讀以下文章
- ESP32-CAM:露天拍賣請搜尋: https://goods.ruten.com.tw/item/show?21910115309507
- ESP32-CAM的開發環境建立與測試,請參考:ESP32-CAM (arduino)影像伺服器及臉部辨識教學原始檔Video Stream Server
- python yolo v3辨識,請參考:Yolo實作教學 — train出屬於自己的model使用darkflow (windows)
- 本次ESP32-CAM所需使用的程式,請參考這篇:ESP32-CAM(ardunio)拍照auto take picture、串流stream及物件辨識object
重點來了,如何使用python接取ESP32-CAM影像,一般在python接取webcam都是用opencv的「cap = cv.VideoCapture(0)」一句就可以搞定,不過ESP32-CAM的影像屬於mjpeg影像串流,因此無法使用這個方法,後來發現需要用到jpg的格式「 FF D8 」為開頭與「 FF D9」為結尾的方式,在串流中找出一張完整的jpg,在放入yolo中進行分析,以下分成兩個主題說明
- python 接取esp32-cam影像
- 利用yolo物件辨識
1.python 接取esp32-cam影像
本部份僅有利用python接取ESP32-CAM影像的程式,無任何其他處理,參考範例程式:
2.利用yolo物件辨識
本部份將上述ESP32CAM影像利用python知名的yolo模型進行物件辨識,參考範例程式:
參考網址:
1.http://hk.voidcc.com/question/p-nagarvzd-b.html
2.http://t.ly/pvLyM