python opencv目标检测,opencv获取摄像头
本文主要介绍python使用opencv调用摄像头实现目标检测的示例代码。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
10月10日-1010年,我用库实现了想法和代码。2020年4月26日,我更新了FPS记录的FPS计算原理。FPS实现代码
目录
很多人想知道如何调用相机,然后检测目标,所以我做了这个小博客。
opencv-python==4.1.2.30
枕头==6.2.1
numpy==1.17.4
这些都是通用库,版本不同应该没有问题。
使用到的库
使用opencv调用摄像头,读取来袭目标检测网络的每一帧进行检测,并呈现检测结果。
因为本文使用的检测格式是RGB格式,CV2在读取时会使用BGR格式,所以检测时要使用cv2.cvtColor进行转换。
实现思路
以Retinanet为例:
从keras.layers导入输入
从retinanet导入Retinanet
从PIL进口图片
将numpy作为np导入
导入cv2
retinanet=Retinanet()
#给摄像机打电话
捕获=cv2。视频捕获(0)
while(True):
#读取某一帧
ref,frame=capture.read()
#格式转换,BGRtoRGB
frame=cv2.cvtColor(帧,cv2。COLOR_BGR2RGB)
#转换为图像
frame=image . from array(NP . uint 8(frame))
#测试
frame=NP . array(re Tina net . detect _ image(frame))
# RGBtoBGR符合opencv显示格式。
frame=cv2.cvtColor(帧,cv2。COLOR_RGB2BGR)
cv2.imshow(视频,帧)
c=cv2.waitKey(30)0xff
如果c==27:
捕获.释放()
破裂
retinanet.close_session()
实现代码
很多朋友说想得到FPS,所以给所有的目标探测网络都加了FPS功能。需要的话请重新下载。
2020/4/26更新:FPS计算
FPS简单理解为图像的刷新频率,即每秒多少帧。
假设目标检测网络处理一帧需要0.02秒。
此时,FPS为50。
FPS记录的原理
这段代码以ssd为例。
# - #
#呼叫摄像机检测
# - #
从ssd导入SSD
从PIL进口图片
将numpy作为np导入
导入cv2
导入时间
固态硬盘=固态硬盘()
#给摄像机打电话
捕获=cv2。视频捕获(0) #捕获=cv2。视频捕获( 1.mp4 )
fps=0.0
while(True):
t1=time.time()
#读取某一帧
ref,frame=capture.read()
#格式转换,BGRtoRGB
frame=cv2.cvtColor(帧,cv2。COLOR_BGR2RGB)
#转换为图像
frame=image . from array(NP . uint 8(frame))
#测试
frame=NP . array(SSD . detect _ image(frame))
# RGBtoBGR符合opencv显示格式
frame=cv2.cvtColor(帧,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(视频,帧)
c=cv2.waitKey(30)0xff
如果c==27:
捕获.释放()
破裂
这就是python用opencv调用摄像头进行目标检测的细节。更多关于Python通过OpenCV调用摄像头进行目标检测的信息,请关注盛行的IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。