返回
将相机与Linux系统相连以进行车辆检测
后端
2023-09-06 04:05:29
摄像头连接
- 将摄像头连接到Linux系统的USB端口。
- 在终端中输入以下命令以打开摄像头:
v4l2-ctl --list-devices
- 查找与摄像头对应的设备路径。
数据集准备
- 使用OpenCV自带的opencv_createsamples工具准备正样本和测试样本。
opencv_createsamples -info pos.dat -w 20 -h 20 -num 1000 --augment 10
opencv_createsamples -info neg.dat -w 20 -h 20 -num 1000 --augment 10
- 将采集到的图片放在相应的文件夹中,并将正样本信息保存到pos.dat,负样本信息保存到neg.dat。
分类器训练
- 使用OpenCV自带的opencv_traincascade工具训练分类器。
opencv_traincascade -data data -vec positives.vec -bg negatives.vec -numPos 1000 -numNeg 1000 -numStages 10 -precalcValBufSize 1024 -precalcIdxBufSize 1024 -featureType HAAR
- 训练完成后,会在data文件夹下生成cascade.xml文件,该文件包含训练好的分类器。
车辆检测
- 使用OpenCV中的CascadeClassifier类加载训练好的分类器。
cascade = cv2.CascadeClassifier('cascade.xml')
- 从摄像头获取帧并将其转换为灰度图。
frame = cv2.VideoCapture(0).read()[1]
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- 使用分类器检测车辆。
vehicles = cascade.detectMultiScale(gray, 1.1, 4)
- 在帧中绘制检测到的车辆。
for (x, y, w, h) in vehicles:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
- 显示帧。
cv2.imshow('frame', frame)
- 按任意键退出程序。
cv2.waitKey(0)