
上期文章,我們分享了如何使用opencv 與MobileNet SSD模型來檢測給定的圖檔,有網友回報能否提供一下視訊流的實時檢測代碼,其實我們在分享人臉識别的時候,分享了如何使用cv2.videoCpature 類來從視訊中實時提取視訊中的圖檔,進行人臉的識别,視訊流的對象檢測跟opencv的人臉檢測一緻,也可以使用cv2.videoCpature 類來從視訊中實時提取視訊中的圖檔,進行圖檔的對象檢測,此類代碼可以參考往期文章人工智能-Dlib+Python實作人臉識别
本期我們使用另外一個第三方庫imutils,首先使用pip install imutils來安裝
1 導入需要的第三方庫
2 初始化訓練模型
此部分代碼跟圖檔檢測一緻
#14 # 15 輸入prototxt與caffe 的模型檔案位址
#17 class清單是SSD caffe檢測模型中的20個label标簽,還包括一個background
#21 針對每個label,随機建一個顔色,以便後期檢測圖檔時 ,使用不同的顔色框,以便區分
# 22 使用cv的dnn加載模型資料
3 初始化視訊對象
# 25 啟動攝像頭,src=0 ,預設是打開裝置的預設攝像頭
# 26 延時 ,以便攝像頭打開
# 27 啟動視訊幀記錄函數
4 視訊流檢測
視訊流的對象檢測與圖檔的檢測過程一緻,每行代碼幾乎都有注釋,不再一一介紹
主要的差別是:圖檔檢測首先定義了圖檔位址,視訊檢測,在視訊流中提圖檔
# 31 resize 了圖檔尺寸,避免圖檔太大
# 53 當檢測到對象後,通過imshow實時顯示在視訊流中
# 54-56 若輸入q 退出
# 57 視訊幀自動加1
5 end
檢測結束,我們關閉一些資源
print 每秒的視訊資訊:每秒處理的視訊幀數,每幀處理的時間
每秒處理8.7幀圖檔,稍微有點慢 ,若電腦組態高的話,或者使用多程序會好很多
多線程與多程序知識點,會在《每天一分鐘,python一點通》系列教程中分享從視訊中截取的圖檔
當然,你也可以導入一個視訊,讓神經網絡來檢測,src=''要打開視訊的絕對位址便可
檢測完成後使用cv2的VideoWriter來儲存視訊便可
vs = VideoStream(src='')
下期分享
說到了多程序,我們下期來使用此方法優化一下代碼來提高每秒的處理