今天拿到了海康威视的摄像头,拿来做目标检测,因为是网线接口,所以必须要用交换机,然后查它的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. 海康威视摄像头安装插件检测不到_海康威视摄像机常见问题解答

    海康威视摄像机常见问题解答 1.忘记摄像机IP地址怎么办? ①可以通过设备网络搜索工具SADP在线搜索 ②可以使用客户端4200在线搜索功能 ③在设备和PC开启UPNP功能时,可以通过PC中网络发现查 ...

  2. 固定摄像头检测行人投射到gps坐标

    场景是在2楼我们固定了一个摄像头,然后实现yolo检测行人,并把行人的gps坐标试试显示出来 下面附上部分代码: import math,osm_nScreenResolution_l = 640; ...

  3. Deepsort + Yolo 实现行人检测和轨迹追踪

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引言 行人检测是近年来计算机视觉领域的研究热点,同时也是目标检测领域中的难点.其目的是识别和定位图像中存在的行人,在许多领域中都 ...

  4. OpenCV+YOLO+IP摄像头实现目标检测

    title: OpenCV+YOLO+IP摄像头实现目标检测 前言 学习OpenCV.YOLO到现在我实现了调用本地摄像头使用自己训练的模型进行目标识别,然后想着能不能远程获取视频数据,然后再PC端处 ...

  5. 小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

    ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体 目录总览 一,项目代码下载 二,ros下实现darknet_ros(YOLO V3)检测 2.1 编译整个项目 ...

  6. (转) 技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道

    技术揭秘:海康威视PASCAL VOC2012目标检测权威评测夺冠之道 原创 2016-09-21 钟巧勇 深度学习大讲堂 点击上方"深度学习大讲堂"可订阅哦!深度学习大讲堂是高质 ...

  7. 读取海康威视摄像头实时显示视频流

    提示:文章用于学习记录 文章目录 前言 一.设置同一网段 二.密码重置 三.VLC 读取视频流 四.opencv 读取视频流 总结 前言 摄像头一般有网线和电源线两个接口,如下图所示, 用网线将摄像头 ...

  8. Gazebo搭建虚拟环境完成ROS机器人定位导航仿真及YOLO检测识别标记物体

    文章目录 前言 一.前期准备 (一)创建工作空间 (二)功能包racecar 二.Gazebo搭建自己的虚拟环境 (一)相关设置 (二)运行小车模型 (三)手动搭建环境 (四)运行创建环境 三.进行g ...

  9. html调用内网海康威视摄像头

    html调用内网海康威视摄像头 我的需求很简单就是在html的主页上用iframe加载出摄像头,海康威视的摄像头无法直接调用,必须安装海康提供的web插件包,使用插件的demo是可以调用的,但是单独搞 ...

最新文章

  1. 最近用到的一些方法技巧
  2. WindowsPhone基础琐碎总结-----数据绑定(一)
  3. 为什么Java要把字符串设计成不可变的
  4. HTML5新增了哪些标签
  5. 快速了解和使用Photon Server
  6. code css怎么拿不到div_不会“编程”拿不到初中毕业证?听北京海淀教委怎么说...
  7. 程序员修炼之道阅读笔记02
  8. OpenCV——基于Python开发的OpenCV安装教程
  9. Linux之SWIG安装(无需安装pcre依赖)
  10. python中casefold()函数的用法
  11. PHP Mysql or条件排序问题
  12. Unity3D脚本中文系列教程(十四)
  13. 处理uniapp开发安卓app进入打开手机的游戏加速模式
  14. 调研分析:全球与中国汽车后置摄像头模组市场现状及未来发展趋势
  15. 利用access对中控考勤系统的二次开发
  16. 计算机会议论文和sci,ei会议论文集算不算期刊_ieee会议论文集属于istp_会议论文集算发表么...
  17. 分享27个高质量前端大佬的油管频道(上)
  18. 地图索引文件MXD保存到数据库中
  19. easySearch:一款聚合资源搜索神器
  20. 统计推断——假设检验——简单线性回归分析

热门文章

  1. RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2
  2. polkit启动失败_CentOS Linux 7.4中polkit服务启动失败
  3. android直播sdk+美颜,直播美颜sdk的三大功能及注意事项
  4. codeforces1194B Yet Another Crosses Problem 思维
  5. 野火指南者移植hal+rtthread+lvgl
  6. linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义
  7. MUSDB18-HQ音乐分轨训练集和MUSDB调用方法
  8. springboo集成bboss-elasticsearch实现elasticsearch客户端
  9. 背景图片定位,水平居中和垂直居中
  10. xmanager连接linux7桌面,使用Xmanager连接CentOS 7远程桌面