python利用opencv调用摄像头实现目标检测

 更新时间:2022年05月09日 10:21:43   作者:Bubbliiiing  
这篇文章主要为大家介绍了python利用opencv调用摄像头实现目标检测的示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

使用到的库

好多人都想了解一下如何对摄像头进行调用,然后进行目标检测,于是我做了这个小BLOG。

opencv-python==4.1.2.30

Pillow==6.2.1

numpy==1.17.4

这些都是通用的库,版本不同问题应该也不大。

实现思路

利用opencv调用摄像头,读取每一帧传入目标检测网络检测,将检测结果呈现。

由于本文所用的检测格式为RGB格式,CV2读取的时候会使用BGR格式,因此在检测的时候要利用cv2.cvtColor进行转换。

实现代码

以Retinanet为例:

from keras.layers import Input
from retinanet import Retinanet
from PIL import Image
import numpy as np
import cv2
retinanet = Retinanet()
# 调用摄像头
capture=cv2.VideoCapture(0) 
while(True):
    # 读取某一帧
    ref,frame=capture.read()
    # 格式转变,BGRtoRGB
    frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
    # 转变成Image
    frame = Image.fromarray(np.uint8(frame))
    # 进行检测
    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计算

很多小伙伴说到想要获取FPS,于是给所有的目标检测网络加上了FPS的功能,需要的小伙伴请重新下载。

FPS记录的原理

FPS简单来理解就是图像的刷新频率,也就是每秒多少帧。

假设目标检测网络处理1帧要0.02s。

此时FPS就是50。

FPS实现代码

该代码以ssd为例。

#-------------------------------------#
#       调用摄像头检测
#-------------------------------------#
from ssd import SSD
from PIL import Image
import numpy as np
import cv2
import time
ssd = SSD()
# 调用摄像头
capture=cv2.VideoCapture(0) # capture=cv2.VideoCapture("1.mp4")
fps = 0.0
while(True):
    t1 = time.time()
    # 读取某一帧
    ref,frame=capture.read()
    # 格式转变,BGRtoRGB
    frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
    # 转变成Image
    frame = Image.fromarray(np.uint8(frame))
    # 进行检测
    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调用摄像头实现目标检测的详细内容,更多关于python opencv调用摄像头目标检测的资料请关注脚本之家其它相关文章!

相关文章

  • Python异常处理try语句应用技巧实例探究

    Python异常处理try语句应用技巧实例探究

    异常处理在Python中是至关重要的,try-except是用于捕获和处理异常的核心机制之一,本文就带大家深入了解如何使用try-except,处理各种异常情况
    2024-01-01
  • Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

    Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

    这篇文章主要介绍了Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 利用 Python 把小伙伴制作成表情包

    利用 Python 把小伙伴制作成表情包

    这篇文章主要介绍了如何利用 Python把你的小伙伴变成表情包,在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,下面详细内容需要的小伙伴可以参考一下
    2022-02-02
  • 分享python中matplotlib指定绘图颜色的八种方式

    分享python中matplotlib指定绘图颜色的八种方式

    这篇文章主要给大家分享的是python中matplotlib指定绘图颜色的八种方式,在使用matplotlib的pyplot库进行绘图时,经常会发现各种开源代码指定“color”的方式并不一致,下面就向大家展示8种指定color的方式,需要的朋友可以参考一下
    2022-03-03
  • python selenium自动化测试框架搭建的方法步骤

    python selenium自动化测试框架搭建的方法步骤

    这篇文章主要介绍了python selenium自动化测试框架搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python pyqtgraph 保存图片到本地的实例

    python pyqtgraph 保存图片到本地的实例

    这篇文章主要介绍了python pyqtgraph 保存图片到本地的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 手写一个python迭代器过程详解

    手写一个python迭代器过程详解

    这篇文章主要介绍了手写一个python迭代器过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 关于ZeroMQ 三种模式python3实现方式

    关于ZeroMQ 三种模式python3实现方式

    今天小编就为大家分享一篇关于ZeroMQ 三种模式python3实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 中秋节老家要贴对联之python无线对联生成器

    中秋节老家要贴对联之python无线对联生成器

    适逢中秋老家居然有在中秋贴对联的习俗,于是自己开机立马写了一个对联生成器,文中给大家介绍的非常详细,对大家的学习或工作具有参考价值
    2021-09-09
  • 基于keras中的回调函数用法说明

    基于keras中的回调函数用法说明

    这篇文章主要介绍了基于keras中的回调函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论