使用yolo对图片,视频,连接相机进行物体检测
最近要用yolov4进行物体检测,把其中的一些问题写下来,
首先按照要求安装yolov4需要的各种东西opencv,cudnn,cuda版本等等,去官网学习怎么安装,然后将源码下载下来编译,将makefile里要用的改为=1,然后make,下载对应的权重weight
一.终端输入命令检测:
在终端运行:以下的v3也可以用v4的权重
1.检测视频MP4或者avi
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <filename…>
2.网络相机实时检测
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights rtsp://admin:password@192.168.1.64(相机ip地址),这种方法的延迟很严重
3.检测示例图片
./darknet detect cfg/yolov3.cfg yolov3.weights data/giraffe.jpg(路径加图片名称)
二.调用Python脚本实时检测
更改darknet_video.py里的line82/83,根据需要选择是读取视频还是相机实时检测,注释不要的那一行;
运行ls /dev/video*看USB接口的相机是第几个,一般0代表
用自带Python运行检测,更改括号里面的数字,0一般代表笔记本前置摄像头,1和2代表其他相机摄像头;
如果搞不清要写几,终端运行ls /dev/video*.我的会出来/dev/video0 /dev/video1 /dev/video2
三个, 不知道为什么那么多,我把参数改为2就可以调用usb口的摄像头,但是我要连接网络相机(网线接口),暂时还没搞出来怎弄.
终端输入运行python darknet_video.py
有时候会报错,换成python3 darknet_video.py
然后也许还有错(python:10196): GStreamer-CRITICAL **: gst_caps_get_structure: assertion ‘index < GST CAPS LEN (caps)’ failed
改一下这个
给cv2.so改个名字
cd /opt/ros/kinetic/lib/python2.7/dist-packages/
sudo mv cv2.so cv2_ros.so
因为可能安装Python和cv的时候有弄混的情况,根据情况改
如果视频卡顿,更改yolov3.cfg/yolov4.cfg里的width和height,改小一点416足够(32的倍数);
Python脚本运行实时检测网络摄像头更新
用yolo实时调用海康威视云台相机进行物体检测用自带Python脚本运行
将前面的 更改darknet_video.py里的line82/83,改为
cap = cv2.VideoCapture(“rtsp://admin:password@192.168.1.64/h264/ch1/main/av_stream”)
但是实时卡顿还是很严重,好像可以通过开多个线程对数据流进行实时处理,但是我没学过Python,不会改,哪位大神可以指点一下??