海康威视摄像头用yolo检测行人的一些问题
今天拿到了海康威视的摄像头,拿来做目标检测,因为是网线接口,所以必须要用交换机,然后查它的IP地址,然后才可以连接,不能把网线直接连接到主机上,下面是简单的读取摄像头的代码。
import cv2
import numpy as npurl = "rtsp://admin:lingtan666@192.168.0.176:554//Streaming/Channels/1"cap = cv2.VideoCapture(url)i = 0while True:(ret, frame) = cap.read()print('ret = ', ret)# cv2.imwrite('/data/drone_detect/keras-yolo3_original/8.13/biaozhu/' + str(i).zfill(6) + '.jpg' , frame)i += 1cv2.imshow("Video", frame)cv2.waitKey(1)
首先是可以调用摄像头了,然后我直接接进yolo中,检测是没有问题,但是延迟十分严重,有10s左右,还有问题是人会出现闪现的情况,应该都是延迟的问题,应该就是这个问题《使用 RTSCapture 类可以防止帧处理速度小于接收速度而导致花屏或者断流(崩溃)》,然后下面附上代码,就是加入线程,之前也没怎么写过,所以不熟练。只是部分代码,yolo是参考keras版本的yolo。就先记录到这里。
import sys
import argparse
from yolo_xie import YOLO, detect_video
from PIL import Image
import cv2
import os
import time
import numpy as np
from datetime import datetimetimenow = time.strftime('%Y%m%d_%H%M%S')
import socket
os.environ["CUDA_VISIBLE_DEVICES"] = "2"# python yolo_video_xie.py --input pathimport threadingclass RTSCapture(cv2.VideoCapture):"""Real Time Streaming Capture."""_cur_frame = None_reading = False@staticmethoddef create(url):"""这个类必须使用 RTSCapture.create 方法创建,请不要直接实例化"""rtscap = RTSCapture(url)rtscap.frame_receiver = threading.Thread(target=rtscap.recv_frame, daemon=True)if isinstance(url, str) and url.startswith(("rtsp://", "rtmp://")):rtscap._reading = Truereturn rtscapdef isStarted(self):"""替代 VideoCapture.isOpened() """ok = self.isOpened()if ok and self._reading:ok = self.frame_receiver.is_alive()return okdef recv_frame(self):"""子线程读取最新视频帧方法"""while self._reading and self.isOpened():ok, frame = self.read()if not ok: breakself._cur_frame = frameself._reading = Falsedef read2(self):"""读取最新视频帧返回结果格式与 VideoCapture.read() 一样"""frame = self._cur_frameself._cur_frame = Nonereturn frame is not None, framedef start_read(self):"""启动子线程读取视频帧"""self.frame_receiver.start()self.read_latest_frame = self.read2 if self._reading else self.readdef stop_read(self):"""退出子线程方法"""self._reading = Falseif self.frame_receiver.is_alive(): self.frame_receiver.join()def detect_img(yolo):# 这个是调用USB摄像头的# fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')# cap = cv2.VideoCapture(0)# cap.set(6,fourcc)# 调用网络摄像头,有2个ip 180是左边窗口的 175是右边窗口的# 这种调用方法会有卡顿# url = "rtsp://admin:lingtan666@192.168.0.176"# url1 = 'rtsp://admin:lingtan666@192.168.0.176:554/h264/ch1/main/av_stream'#cap = cv2.VideoCapture(url)rtscap = RTSCapture.create('rtsp://admin:lingtan666@192.168.0.176:554/h264/ch1/main/av_stream')rtscap.start_read()k = 0while rtscap.isStarted():ok, frame = rtscap.read_latest_frame()if not ok:# print('not ok 11111111111111111111111111')if cv2.waitKey(100) & 0xFF == ord('q'): breakcontinuesave_img_path = '/data/drone_detect/keras-yolo3_original/8.13/test/'cv2_img_path = '/data/drone_detect/keras-yolo3_original/8.13/cv2_img/'i_str = str(k).zfill(6) + '.jpg'k += 1# RGB通道转换frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)# frame_crop = frame[799:1471,1566:2334,]# frame_crop = frame[800:1400,1300:2400,]# 简而言之,就是实现array到image的转换image = Image.fromarray(frame)# image = Image.open(cv2_img_path + i_str)a = datetime.now()r_image,person = yolo.detect_image(image, i_str)print(person)r_image.save(save_img_path + i_str)# 把pil格式转换成可以给cv2输出的格式img = cv2.cvtColor(np.asarray(r_image), cv2.COLOR_RGB2BGR)cv2.imshow('1', img)cv2.waitKey(1)b = datetime.now()print("检测时间:", (b - a))# cv2.imshow('1',r_image)# cv2.waitKey(0)# r_image.save(save_img_path + i_str)# r_image.show()# show_image = cv2.imread(save_img_path + i_str)# cv2.imshow('1',r_image)# cv2.waitKey(1)# label = []# for i in range(len(person)):# label.append(person[i][1])# for j in range(len(rubbish)):# label.append(rubbish[j][1])# print(person,'1111111111111111111111')# print(rubbish,'2222222222222222222222')#instr = str(5).encode()#client.send(instr)FLAGS = Noneif __name__ == '__main__':# class YOLO defines the default value, so suppress any default hereparser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS)'''Command line options'''parser.add_argument('--model', type=str,help='path to model weight file, default ' + YOLO.get_defaults("model_path"))parser.add_argument('--anchors', type=str,help='path to anchor definitions, default ' + YOLO.get_defaults("anchors_path"))parser.add_argument('--classes', type=str,help='path to class definitions, default ' + YOLO.get_defaults("classes_path"))parser.add_argument('--gpu_num', type=int,help='Number of GPU to use, default ' + str(YOLO.get_defaults("gpu_num")))parser.add_argument('--image', default=False, action="store_true",help='Image detection mode, will ignore all positional arguments')'''Command line positional arguments -- for video detection mode'''parser.add_argument("--input", nargs='?', type=str,required=False,default='./path2your_video',help = "Video input path")parser.add_argument("--output", nargs='?', type=str, default="",help = "[Optional] Video output path")# client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)# client.connect("/tmp/test.sock")FLAGS = parser.parse_args()if FLAGS.image:"""Image detection mode, disregard any remaining command line arguments"""print("Image detection mode")print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!")if "input" in FLAGS:print(" Ignoring remaining command line arguments: " + FLAGS.input + "," + FLAGS.output)detect_img(YOLO(**vars(FLAGS)))elif "input" in FLAGS:detect_video(YOLO(**vars(FLAGS)), FLAGS.input, FLAGS.output)else:print("Must specify at least video_input_path. See usage with --help.")
海康威视摄像头用yolo检测行人的一些问题相关推荐
- 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答
海康威视摄像机常见问题解答 1.忘记摄像机IP地址怎么办? ①可以通过设备网络搜索工具SADP在线搜索 ②可以使用客户端4200在线搜索功能 ③在设备和PC开启UPNP功能时,可以通过PC中网络发现查 ...
- 固定摄像头检测行人投射到gps坐标
场景是在2楼我们固定了一个摄像头,然后实现yolo检测行人,并把行人的gps坐标试试显示出来 下面附上部分代码: import math,osm_nScreenResolution_l = 640; ...
- Deepsort + Yolo 实现行人检测和轨迹追踪
作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言 行人检测是近年来计算机视觉领域的研究热点,同时也是目标检测领域中的难点.其目的是识别和定位图像中存在的行人,在许多领域中都 ...
- OpenCV+YOLO+IP摄像头实现目标检测
title: OpenCV+YOLO+IP摄像头实现目标检测 前言 学习OpenCV.YOLO到现在我实现了调用本地摄像头使用自己训练的模型进行目标识别,然后想着能不能远程获取视频数据,然后再PC端处 ...
- 小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体
ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体 目录总览 一,项目代码下载 二,ros下实现darknet_ros(YOLO V3)检测 2.1 编译整个项目 ...
- (转) 技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道
技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道 原创 2016-09-21 钟巧勇 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质 ...
- 读取海康威视摄像头实时显示视频流
提示:文章用于学习记录 文章目录 前言 一.设置同一网段 二.密码重置 三.VLC 读取视频流 四.opencv 读取视频流 总结 前言 摄像头一般有网线和电源线两个接口,如下图所示, 用网线将摄像头 ...
- Gazebo搭建虚拟环境完成ROS机器人定位导航仿真及YOLO检测识别标记物体
文章目录 前言 一.前期准备 (一)创建工作空间 (二)功能包racecar 二.Gazebo搭建自己的虚拟环境 (一)相关设置 (二)运行小车模型 (三)手动搭建环境 (四)运行创建环境 三.进行g ...
- html调用内网海康威视摄像头
html调用内网海康威视摄像头 我的需求很简单就是在html的主页上用iframe加载出摄像头,海康威视的摄像头无法直接调用,必须安装海康提供的web插件包,使用插件的demo是可以调用的,但是单独搞 ...
最新文章
- 最近用到的一些方法技巧
- WindowsPhone基础琐碎总结-----数据绑定(一)
- 为什么Java要把字符串设计成不可变的
- HTML5新增了哪些标签
- 快速了解和使用Photon Server
- code css怎么拿不到div_不会“编程”拿不到初中毕业证?听北京海淀教委怎么说...
- 程序员修炼之道阅读笔记02
- OpenCV——基于Python开发的OpenCV安装教程
- Linux之SWIG安装(无需安装pcre依赖)
- python中casefold()函数的用法
- PHP Mysql or条件排序问题
- Unity3D脚本中文系列教程(十四)
- 处理uniapp开发安卓app进入打开手机的游戏加速模式
- 调研分析:全球与中国汽车后置摄像头模组市场现状及未来发展趋势
- 利用access对中控考勤系统的二次开发
- 计算机会议论文和sci,ei会议论文集算不算期刊_ieee会议论文集属于istp_会议论文集算发表么...
- 分享27个高质量前端大佬的油管频道(上)
- 地图索引文件MXD保存到数据库中
- easySearch:一款聚合资源搜索神器
- 统计推断——假设检验——简单线性回归分析
热门文章
- RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2
- polkit启动失败_CentOS Linux 7.4中polkit服务启动失败
- android直播sdk+美颜,直播美颜sdk的三大功能及注意事项
- codeforces1194B Yet Another Crosses Problem 思维
- 野火指南者移植hal+rtthread+lvgl
- linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义
- MUSDB18-HQ音乐分轨训练集和MUSDB调用方法
- springboo集成bboss-elasticsearch实现elasticsearch客户端
- 背景图片定位,水平居中和垂直居中
- xmanager连接linux7桌面,使用Xmanager连接CentOS 7远程桌面