python利用opencv調(diào)用攝像頭實(shí)現(xiàn)目標(biāo)檢測(cè)
使用到的庫(kù)
好多人都想了解一下如何對(duì)攝像頭進(jìn)行調(diào)用,然后進(jìn)行目標(biāo)檢測(cè),于是我做了這個(gè)小BLOG。
opencv-python==4.1.2.30
Pillow==6.2.1
numpy==1.17.4
這些都是通用的庫(kù),版本不同問(wèn)題應(yīng)該也不大。
實(shí)現(xiàn)思路
利用opencv調(diào)用攝像頭,讀取每一幀傳入目標(biāo)檢測(cè)網(wǎng)絡(luò)檢測(cè),將檢測(cè)結(jié)果呈現(xiàn)。
由于本文所用的檢測(cè)格式為RGB格式,CV2讀取的時(shí)候會(huì)使用BGR格式,因此在檢測(cè)的時(shí)候要利用cv2.cvtColor進(jìn)行轉(zhuǎn)換。
實(shí)現(xiàn)代碼
以Retinanet為例:
from keras.layers import Input
from retinanet import Retinanet
from PIL import Image
import numpy as np
import cv2
retinanet = Retinanet()
# 調(diào)用攝像頭
capture=cv2.VideoCapture(0)
while(True):
# 讀取某一幀
ref,frame=capture.read()
# 格式轉(zhuǎn)變,BGRtoRGB
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
# 轉(zhuǎn)變成Image
frame = Image.fromarray(np.uint8(frame))
# 進(jìn)行檢測(cè)
frame = np.array(retinanet.detect_image(frame))
# RGBtoBGR滿足opencv顯示格式
frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
cv2.imshow("video",frame)
c= cv2.waitKey(30) & 0xff
if c==27:
capture.release()
break
retinanet.close_session()
2020/4/26更新:FPS計(jì)算
很多小伙伴說(shuō)到想要獲取FPS,于是給所有的目標(biāo)檢測(cè)網(wǎng)絡(luò)加上了FPS的功能,需要的小伙伴請(qǐng)重新下載。
FPS記錄的原理
FPS簡(jiǎn)單來(lái)理解就是圖像的刷新頻率,也就是每秒多少幀。
假設(shè)目標(biāo)檢測(cè)網(wǎng)絡(luò)處理1幀要0.02s。
此時(shí)FPS就是50。
FPS實(shí)現(xiàn)代碼
該代碼以ssd為例。
#-------------------------------------#
# 調(diào)用攝像頭檢測(cè)
#-------------------------------------#
from ssd import SSD
from PIL import Image
import numpy as np
import cv2
import time
ssd = SSD()
# 調(diào)用攝像頭
capture=cv2.VideoCapture(0) # capture=cv2.VideoCapture("1.mp4")
fps = 0.0
while(True):
t1 = time.time()
# 讀取某一幀
ref,frame=capture.read()
# 格式轉(zhuǎn)變,BGRtoRGB
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
# 轉(zhuǎn)變成Image
frame = Image.fromarray(np.uint8(frame))
# 進(jìn)行檢測(cè)
frame = np.array(ssd.detect_image(frame))
# RGBtoBGR滿足opencv顯示格式
frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
fps = ( fps + (1./(time.time()-t1)) ) / 2
print("fps= %.2f"%(fps))
frame = cv2.putText(frame, "fps= %.2f"%(fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.imshow("video",frame)
c= cv2.waitKey(30) & 0xff
if c==27:
capture.release()
break
以上就是python利用opencv調(diào)用攝像頭實(shí)現(xiàn)目標(biāo)檢測(cè)的詳細(xì)內(nèi)容,更多關(guān)于python opencv調(diào)用攝像頭目標(biāo)檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 在VS2019環(huán)境下使用Opencv調(diào)用GPU版本YOLOv4算法的詳細(xì)過(guò)程
- Qt結(jié)合OpenCV部署yolov5的實(shí)現(xiàn)
- opencv-python+yolov3實(shí)現(xiàn)目標(biāo)檢測(cè)
- 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測(cè)
- OpenCV實(shí)現(xiàn)車輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè)
- opencv調(diào)用yolov3模型深度學(xué)習(xí)目標(biāo)檢測(cè)實(shí)例詳解
相關(guān)文章
Python異常處理try語(yǔ)句應(yīng)用技巧實(shí)例探究
異常處理在Python中是至關(guān)重要的,try-except是用于捕獲和處理異常的核心機(jī)制之一,本文就帶大家深入了解如何使用try-except,處理各種異常情況2024-01-01
Windows環(huán)境下Python3.6.8 importError: DLLload failed:找不到指定的模塊
這篇文章主要介紹了Windows環(huán)境下Python3.6.8 importError: DLLload failed:找不到指定的模塊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
分享python中matplotlib指定繪圖顏色的八種方式
這篇文章主要給大家分享的是python中matplotlib指定繪圖顏色的八種方式,在使用matplotlib的pyplot庫(kù)進(jìn)行繪圖時(shí),經(jīng)常會(huì)發(fā)現(xiàn)各種開(kāi)源代碼指定“color”的方式并不一致,下面就向大家展示8種指定color的方式,需要的朋友可以參考一下2022-03-03
python selenium自動(dòng)化測(cè)試框架搭建的方法步驟
這篇文章主要介紹了python selenium自動(dòng)化測(cè)試框架搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
python pyqtgraph 保存圖片到本地的實(shí)例
這篇文章主要介紹了python pyqtgraph 保存圖片到本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
關(guān)于ZeroMQ 三種模式python3實(shí)現(xiàn)方式
今天小編就為大家分享一篇關(guān)于ZeroMQ 三種模式python3實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
中秋節(jié)老家要貼對(duì)聯(lián)之python無(wú)線對(duì)聯(lián)生成器
適逢中秋老家居然有在中秋貼對(duì)聯(lián)的習(xí)俗,于是自己開(kāi)機(jī)立馬寫了一個(gè)對(duì)聯(lián)生成器,文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有參考價(jià)值2021-09-09
基于keras中的回調(diào)函數(shù)用法說(shuō)明
這篇文章主要介紹了基于keras中的回調(diào)函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06

