当前位置: 首页 > news >正文

pycv实时目标检测快速实现

使用python_cv实现目标实时检测

  • python 安装依赖
  • 核心代码快速使用
  • 实现结果展示
  • enjoy

python 安装依赖

opencv_python==4.7.0.72
pandas==1.5.3
tensorflow==2.11.0
tensorflow_hub==0.13.0
tensorflow_intel==2.11.0
numpy==1.23.5

核心代码快速使用

# 使用了TensorFlow Hub和OpenCV库来实现实时对象检测
# tensorflow_hub:用于加载预训练的模型。
# cv2:OpenCV库,用于图像处理和视频流操作。
# tensorflow:深度学习框架。
# pandas:数据处理库。import tensorflow_hub as hub
import cv2
# import numpy
import tensorflow as tf
import pandas as pd# 加载了EfficientDet Lite2检测模型,并读取了标签文件:# 模型加载方式被注释掉,直接通过本地路径加载模型。
# 从CSV文件中读取标签,以ID作为索引,获取对象名称。# Carregar modelos
# detector = hub.load("https://tfhub.dev/tensorflow/efficientdet/lite2/detection/1")
detector = hub.load("efficientdet_lite2_detection_1")
labels = pd.read_csv('labels.csv', sep=';', index_col='ID')
labels = labels['OBJECT (2017 REL.)']# 初始化摄像头捕获,0表示默认摄像头。
cap = cv2.VideoCapture(0)# 定义输入图像的宽度和高度。width = 512
height = 512# 接下来是一个循环,用于实时处理视频流:
while (True):# Capture frame-by-frame# 在循环中,逐帧捕获视频并调整尺寸以匹配模型输入。ret, frame = cap.read()# Resize to respect the input_shapeinp = cv2.resize(frame, (width, height))# 将BGR格式的图像转换为RGB格式,这是因为大多数深度学习模型接受RGB输入。# Convert img to RGBrgb = cv2.cvtColor(inp, cv2.COLOR_BGR2RGB)# Is optional but i recommend (float convertion and convert img to tensor image)rgb_tensor = tf.convert_to_tensor(rgb, dtype=tf.uint8)# 将图像转换为TensorFlow张量,类型为uint8。# Add dims to rgb_tensorrgb_tensor = tf.expand_dims(rgb_tensor, 0)# 增加一个维度以匹配模型输入要求。boxes, scores, classes, num_detections = detector(rgb_tensor)pred_labels = classes.numpy().astype('int')[0]pred_labels = [labels[i] for i in pred_labels]pred_boxes = boxes.numpy()[0].astype('int')pred_scores = scores.numpy()[0]# 将预测结果转换为可处理的格式,包括标签、边界框和得分。#循环遍历每个检测到的对象,绘制边界框和标签,只显示得分高于0.5的对象。# loop throughout the faces detected and place a box around itfor score, (ymin, xmin, ymax, xmax), label in zip(pred_scores, pred_boxes, pred_labels):if score < 0.5:continuescore_txt = f'{100 * round(score,0)}'img_boxes = cv2.rectangle(rgb, (xmin, ymax), (xmax, ymin), (0,  255, 0), 1)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img_boxes, label, (xmin, ymax-10), font, 0.5, (255, 0, 0), 1, cv2.LINE_AA)cv2.putText(img_boxes, score_txt, (xmax, ymax-10), font, 0.5, (255, 0, 0), 1, cv2.LINE_AA)# 显示处理后的图像,并在按下'q'键时退出循环。# Display the resulting framecv2.imshow('black and white', img_boxes)if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头资源并关闭所有OpenCV窗口,确保程序正常结束。
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

实现结果展示

enjoy

github:liveCamer

http://www.lryc.cn/news/441153.html

相关文章:

  • 记录下如何让字体在div内 自动换行 上下居中
  • Shell篇之编写MySQL启动脚本
  • supermap Iclient3d for cesium加载地形并夸大地形
  • 一文解读OLAP的工具和应用软件
  • xml重点笔记(尚学堂 3h)
  • 爬虫代理API的全面解析:让数据抓取更高效
  • PCL 点云中的植被信息提取(C++详细过程版)
  • requests-html的具体使用方法有哪些?
  • YOLOv9改进策略【卷积层】| AKConv: 具有任意采样形状和任意参数数量的卷积核
  • 图神经网络池化方法
  • 小琳AI课堂:确保大语言模型安全的八大策略--从数据隐私到用户教育
  • Python 数学建模——高斯核密度估计
  • Flink+Spark相关记录
  • 2023 hnust 湖科大 毕业实习 报告+实习鉴定表
  • ConflictingBeanDefinitionException | 运行SpringBoot项目时报错bean定义冲突解决方案
  • 如何切换淘宝最新镜像源(npm)【2024版】
  • YoloV10改进策略:Block改进|PromptIR(NIPS‘2023)|轻量高效,即插即用|(适用于分类、分割、检测等多种场景)
  • 使用rust自制操作系统内核
  • Flink难点和高阶面试题:Flink的状态管理机制如何保证数据处理的准确性和完整性
  • 【激励广告带来的广告收入与用户留存率的双重提升】
  • 指针和引用;内联函数和普通函数
  • 简单题67.二进制求和 (java)20240919
  • DDD的主要流程
  • linux驱动开发-设备树
  • 数据结构——二叉树堆的专题
  • 【C语言零基础入门篇 - 7】:拆解函数的奥秘:定义、声明、变量,传递须知,嵌套玩转,递归惊艳
  • ClickHouse在AI领域的结合应用
  • git push出错Push cannot contain secrets
  • OpenAI 的最强模型 o1 的“护城河”失守?谷歌 DeepMind 早已揭示相同原理
  • 【胡乱念叨】大模型的“我”