天天看點

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

上期文章,我們分享了如何使用opencv 與MobileNet SSD模型來檢測給定的圖檔,有網友回報能否提供一下視訊流的實時檢測代碼,其實我們在分享人臉識别的時候,分享了如何使用cv2.videoCpature 類來從視訊中實時提取視訊中的圖檔,進行人臉的識别,視訊流的對象檢測跟opencv的人臉檢測一緻,也可以使用cv2.videoCpature 類來從視訊中實時提取視訊中的圖檔,進行圖檔的對象檢測,此類代碼可以參考往期文章人工智能-Dlib+Python實作人臉識别

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

本期我們使用另外一個第三方庫imutils,首先使用pip install imutils來安裝

1 導入需要的第三方庫

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

2 初始化訓練模型

此部分代碼跟圖檔檢測一緻

#14 # 15 輸入prototxt與caffe 的模型檔案位址
#17 class清單是SSD caffe檢測模型中的20個label标簽,還包括一個background
#21 針對每個label,随機建一個顔色,以便後期檢測圖檔時 ,使用不同的顔色框,以便區分
# 22 使用cv的dnn加載模型資料
           
opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

3 初始化視訊對象

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

# 25 啟動攝像頭,src=0 ,預設是打開裝置的預設攝像頭

# 26 延時 ,以便攝像頭打開

# 27 啟動視訊幀記錄函數

4 視訊流檢測

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

視訊流的對象檢測與圖檔的檢測過程一緻,每行代碼幾乎都有注釋,不再一一介紹

主要的差別是:圖檔檢測首先定義了圖檔位址,視訊檢測,在視訊流中提圖檔

# 31 resize 了圖檔尺寸,避免圖檔太大

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

# 53 當檢測到對象後,通過imshow實時顯示在視訊流中

# 54-56 若輸入q 退出

# 57 視訊幀自動加1

5 end

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

檢測結束,我們關閉一些資源

print 每秒的視訊資訊:每秒處理的視訊幀數,每幀處理的時間

每秒處理8.7幀圖檔,稍微有點慢 ,若電腦組態高的話,或者使用多程序會好很多

多線程與多程序知識點,會在《每天一分鐘,python一點通》系列教程中分享
opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

從視訊中截取的圖檔

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)
微&信搜尋:啟示AI 科技 可以體驗不同的AI 工具
opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)

當然,你也可以導入一個視訊,讓神經網絡來檢測,src=''要打開視訊的絕對位址便可

檢測完成後使用cv2的VideoWriter來儲存視訊便可

vs = VideoStream(src='')

下期分享

說到了多程序,我們下期來使用此方法優化一下代碼來提高每秒的處理

opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)
微信搜尋小程式:AI人工智能工具
opencv 多線程_深度學習和OpenCV的對象檢測(MobileNet SSD視訊流實時識别)