首页 > 编程语言 >自动驾驶ADAS算法--后视碰撞预警算法实现和测试demo的exe

自动驾驶ADAS算法--后视碰撞预警算法实现和测试demo的exe

时间:2025-01-07 21:32:10浏览次数:3  
标签:capture exe frame yolo 后视 js 算法 测试 data

下载测试工程后可以根据《自动驾驶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(&para);
			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

相关文章

  • 基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
    1.程序功能描述基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真,对比不同的参数对OBNLM算法的影响。2.测试软件版本以及运行结果展示MATLAB2022A版本运行  3.核心程序Im0=imread('test.png');Blks1=3;Blks2=5;Blks3=7;Win......
  • 数据结构与算法-单链表
    单链表链表的介绍既然顺序存储中的数据因为挤在一起而导致需要成片移动,那很容易想到的解决方案是将数据离散地存储在不同内存块中,然后在用来指针将它们串起来。这种朴素的思路所形成的链式线性表,就是所谓的链表。上图中,所有的节点均保存一个指针,指向其逻辑上相邻的下一......
  • 基于决策树的机器学习算法实现足球比赛预测分析推荐
    决策树是一种常用的机器学习算法,它可以用于分类和回归任务。在足球比赛中预测“大小球”(即比赛的总进球数是否超过某个阈值)可以看作是一个分类问题。以下是一个使用决策树预测足球大小球的代码实现流程解析:1.数据准备首先,需要准备训练和测试数据集。这些数据集应该包含与比......
  • EBS在form中调用另一个form的方法,函数:fnd_function.execute
    如何在form1中调用form2呢?可以使用函数fnd_function.execute。其函数定义如下:fnd_function.execute(function_name,--功能名称open_flag,session_flag,--两个form是否使用同一个会话other_params--参数activate_flag--光标是否移到新formbrower_target);例子1:fnd_function......
  • 自定义加密算法
    常见的哈希算法如Caesar,Base64,MurmurHash等已经被安全研究人员盯上了,经常使用这些算法作为特征定位恶意软件,因此最好使用自定义算法或不常见算法。base58加密cmd.exe#include<winsock2.h>#include<string.h>#include<stdio.h>#include<stdlib.h>constchar*const......
  • 椭圆曲线ECC算法
    基于“单向”数学问题,在一个方向上很简单,但在另一个方向上很困难,例如RSA是分解素数,ECC则是计算y2=x3+ax+bC语言在不使用第三方库情况下实现ECC算法比较麻烦,这里使用python和第三方库tinyec实现ECC算法安装库sudopip3installpycryptodomesudopip3installtinye......
  • 卡尔曼滤波(Kalman Filter) 从理论到实战详解 附算法源码
    目录一、卡尔曼滤波的引入二、状态观测器三、最优状态估计四、最优状态估计算法和方程五、热成像仪使用卡尔曼滤波器案例一、卡尔曼滤波的引入卡尔曼滤波用于优化估算我们感兴趣的量,当这些量无法直接测量但可以间接测量的时候,他们还用于估算系统状态,通过组合各种可能......
  • 算法基础 -二叉树遍历
    文章目录1.二叉树概念2.层序遍历2.1.复杂度2.2.示例12.3.示例23.层次遍历23.1.层次遍历规则3.2.层次遍历举例3.3.层次遍历代码4.先序遍历4.1.先序遍历规则4.2.先序遍历举例4.3.先序遍历代码(递归)4.4.先序遍历代码(非递归)5.中序遍历5.1.中序遍历规则5.2.......
  • 代码随想录算法训练营第五十六天|KM108.冗余连接|KM109.冗余连接Ⅱ
    108.冗余连接本题光看题目没理解具体什么意思;看了题解有点明白了;(个人觉得还是力扣的题目描述比较容易理解)题目意思:大概就是加一条边使树结构有环,然后再环中去掉一条边(如果环中多条边可取,则去掉最后一条边),仍然变成一颗树结构;思路:观察两个节点是否再一个集合,如果不在,也可以将......
  • 高效驰骋棋盘:马踏棋盘算法优化攻略与实践
    文章目录......