海康威视摄像头用yolo检测行人的一些问题

本文介绍了使用海康威视摄像头进行Yolo目标检测时遇到的延迟和行人闪现问题。通过交换机获取摄像头IP并进行连接,发现在将摄像头接入Yolo检测系统后,存在约10秒的延迟,并导致行人显示不稳定。为解决这个问题,作者考虑采用RTSCapture类来避免帧处理速度慢于接收速度导致的花屏或崩溃,同时分享了部分代码,代码中涉及线程的使用,Yolo模型基于Keras实现。
摘要由CSDN通过智能技术生成

今天拿到了海康威视的摄像头,拿来做目标检测,因为是网线接口,所以必须要用交换机,然后查它的IP地址,然后才可以连接,不能把网线直接连接到主机上,下面是简单的读取摄像头的代码。

import cv2
import numpy as np

url = "rtsp://admin:lingtan666@192.168.0.176:554//Streaming/Channels/1"

cap = cv2.VideoCapture(url)

i = 0

while 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 += 1
    cv2.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 datetime

timenow = time.strftime('%Y%m%d_%H%M%S')
import socket
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

#  python yolo_video_xie.py --input path

import threading

class RTSCapture(cv2.VideoCapture):
    """Real Time Streaming Capture.
    """

    _cur_frame = None
    _reading = False

    @staticmethod
    def create(url):
        """这个类必须使用 RTSCapture.create 方法创建,请不要直接实例化""
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值