下载测试工程后可以根据《自动驾驶ADAS算法--测试工程环境搭建-CSDN博客》完成环境的搭建。
测试的exe程序,无需解压码就可以体验算法测试效果(代码原工程非免费介意无下载)
通过网盘分享的文件:后视碰撞预警
链接: https://pan.baidu.com/s/1j6FZKLPLN2RN9SdwZso0uA 提取码: vdh3
1、压缩包解压后显示如下所示
测试文件包括:可执行的exe文件、测试的视频等。
2.双击exe就可以运行测试程序,测试程序界面显示如下所示:
测试效果如下所示:
虚拟视频测试效果图片
实车测试效果图片
虚拟视频测试效果视频
<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="o9DLuiY4-1736241802387" src="https://player.bilibili.com/player.html?aid=113786132496658"></iframe>自动驾驶ADAS算法--基于yolo的后视图像碰撞预警虚拟测试结果
实车测试效果视频
<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="6qjgyUaM-1736241819812" src="https://player.bilibili.com/player.html?aid=113786098812389"></iframe>自动驾驶ADAS算法--基于yolo的后视图像碰撞预警实车测试结果
部分代码实现如下所示:
// TODO: 在此添加控件通知处理程序代码
int c = 0;
int frameRate = 10;
Mat frame;
namedWindow("video-demo", WINDOW_AUTOSIZE);
VideoCapture capture;
//连接视频
capture.open("晴天后视碰撞.avi");
if (!capture.isOpened()) {
printf("could not load video data...\n");
}
int frames = capture.get(CAP_PROP_FRAME_COUNT);//获取视频针数目(一帧就是一张图片)
double fps = capture.get(CAP_PROP_FPS);//获取每针视频的频率
// 获取帧的视频宽度,视频高度
Size size = Size(capture.get(CAP_PROP_FRAME_WIDTH), capture.get(CAP_PROP_FRAME_HEIGHT));
cout << frames << endl;
cout << fps << endl;
cout << size << endl;
VideoWriter writer("result.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, Size(JS_IMG_W, JS_IMG_H));
int alarmFalg = 0;
int alarmIndex = 0;
//step2:load labels
js_yolo_loadLabels("coco.names");
int FrameNum = 0;
//step-3:load onnx model
std::string onnxpath = "yolo11n.onnx";
js_yolo_loadModes(onnxpath);
js_initObjList(&g_ttc_objlist_B);
js_initMultObjList(&g_ttc_objlist_Mult_B);
for (;;)
{
//将视频转给每一张张图进行处理
capture >> frame;
//step-5:get infer result
int64 start = cv::getTickCount();
int w = frame.cols;
int h = frame.rows;
if (w > 0 && h > 0)
{
//运行函数
js_yolo_run(frame, w, h);
// NMS
js_yolo_NMS(); //js_yolo_NMS(frame);
//初始化算法结构体
js_yolo_initObj(&g_ttc_objlist_B);
float data_TOP_A[9], data_TOP_A_T[9];
js_3Dpointf Pdst;
js_pointf PsrcLF3, PsrcRF3, PsrcLF1, PsrcRF1, PsrcLF2, PsrcRF2;
JS_Parameter para;
js_fc fc;
js_init_Parameter(¶);
js_initfc(&fc);
js_initAngle(data_TOP_A, para.rx, para.ry, para.rz);
js_initAngleT(data_TOP_A, data_TOP_A_T);
for (int i = 0; i < 9; i++)printf("%f ", data_TOP_A_T[i]);
//多帧跟踪 g_ttc_objlist_Mult_B
int ttflag = 0;
js_MultTrack(g_ttc_objlist_B, &g_ttc_objlist_Mult_B, 0.2);
js_getSpeed_ttc_wordp(&g_ttc_objlist_Mult_B, data_TOP_A_T, para, fc, 33);
putTextZH(frame, " 金书世界 \nwww.jinshushijie.com", cv::Point(10, 20), Scalar(255, 0, 0), 40, "楷体", false, false); //输出文字到图像上
FrameNum++;
writer << frame;
//视频播放完退出
if (frame.empty())break;
imshow("video-demo", frame);
//在视频播放期间按键退出
if (waitKey(33) >= 0) break;
}
}
//释放
capture.release();
g_yolo_session_options.release();
js_yolo_release();
标签:capture,exe,frame,yolo,后视,js,算法,测试,data
From: https://blog.csdn.net/jinshushijie/article/details/144989390