自动驾驶AVM环视算法--540度全景的算法实现和exe测试demo

参考:金书世界

540度全景影像是什么

540度全景影像是在360度全景影像基础上的升级功能,它增加了更多的摄像头来收集周围的图像数据。通常,这些摄像头分布在车辆的更多位置,例如车顶、车底等,以便更全面地捕捉车辆周围的情况。在开启全景影像功能时,这些摄像头收集的图像数据会被系统处理并拼接在一起,形成一个从车顶鸟瞰的全景俯视图。这种视图可以提供更全面的视野,帮助驾驶员更好地了解车辆周围的环境,从而提高驾驶安全性和便利性。

更新:测试的exe程序,无需解压码就可以体验算法测试效果

链接:https://pan.baidu.com/s/1iOFRd0bWQsbt7mx1ADvL-g 提取码:97nk

1、压缩包解压后显示如下所示

测试文件包括:可执行的exe文件、测试的视频等。

2.双击exe就可以运行测试程序,测试程序界面显示如下所示:

3、540度全景按钮如下所示

视频效果

AVM全景的多视图模式--549度全景

4、540全景算法实现代码如下所示

复制代码
	//MFC弹出命令窗体
	AllocConsole();
	freopen("CONOUT$", "w", stdout);
	//MFC弹出命令窗体
	int ww = 10;
	cvNamedWindow("视频播放", CV_WINDOW_AUTOSIZE);																							//创建用于显示的窗体	
	sprintf(g_Test_Video_Path_D, "video1\\Down.avi");
	sprintf(g_Test_Video_Path_F, "video1\\Front.avi");
	sprintf(g_Test_Video_Path_B, "video1\\Back.avi");
	sprintf(g_Test_Video_Path_L, "video1\\Left.avi");
	sprintf(g_Test_Video_Path_R, "video1\\Right.avi");
	IplImage* img_AVM_540 = cvCreateImage(cvSize(JS_AVM_IMGW, JS_AVM_IMGH), 8, 3);
	CvVideoWriter* writer = cvCreateVideoWriter("result\\540.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25, cvSize(JS_AVM_IMGW, JS_AVM_IMGH));
	CvCapture* C_img_F = cvCreateFileCapture(g_Test_Video_Path_F);																			//读取前视测试视频
	CvCapture* C_img_B = cvCreateFileCapture(g_Test_Video_Path_B);																			//读取后视测试视频
	CvCapture* C_img_L = cvCreateFileCapture(g_Test_Video_Path_L);																			//读取左视测试视频
	CvCapture* C_img_R = cvCreateFileCapture(g_Test_Video_Path_R);																			//读取右视测试视频
	CvCapture* C_img_D = cvCreateFileCapture(g_Test_Video_Path_D);																			//读取右视测试视频
	IplImage* img_F, * img_B, * img_L, * img_R, * img_D;																					//定义各个视图的图像
	IplImage* CarImage = cvLoadImage("top.png");
	js_AVM_obj AVMData_540;

	js_init_avm_540(&AVMData_540, img_AVM_540->width, img_AVM_540->height, 0);

	IplImage* CarImageResize = cvCreateImage(cvSize(AVMData_540.RFsrc.x - AVMData_540.LFsrc.x + 2 * ww, AVMData_540.LBsrc.y - AVMData_540.LFsrc.y + 2 * ww), 8, 3);
	cvResize(CarImage, CarImageResize);

	int num = 0;
	while (img_F = cvQueryFrame(C_img_F))
	{
		img_B = cvQueryFrame(C_img_B);
		img_L = cvQueryFrame(C_img_L);
		img_R = cvQueryFrame(C_img_R);
		img_D = cvQueryFrame(C_img_D);
		js_getAVM_540(&AVMData_540, img_AVM_540->imageData, img_F->imageData, img_B->imageData, img_L->imageData, img_R->imageData, img_D->imageData, img_F->width, img_F->height, img_AVM_540->width, img_AVM_540->height, img_AVM_540->nChannels, 0);


		js_DrawCar(img_AVM_540, CarImageResize, AVMData_540.LFsrc.x - ww, AVMData_540.LFsrc.y - ww, CarImageResize->width, CarImageResize->height);

		Mat img = cvarrToMat(img_AVM_540);
		putTextZH(img, "      金书世界      \nwww.jinshushijie.com", CvPoint(10, 20), Scalar(0, 0, 255), 30, "楷体", false, false);


		cvWriteFrame(writer, img_AVM_540);


		cvShowImage("视频播放", img_AVM_540);
		char c = cvWaitKey(1);
		if (c == 27)break;
		num++;
	}
	cvReleaseVideoWriter(&writer);																											//释放视频保存的结构体
	cvReleaseCapture(&C_img_F);																												//释放前视的图像结构体
	cvReleaseCapture(&C_img_B);																												//释放前视的图像结构体
	cvReleaseCapture(&C_img_L);																												//释放前视的图像结构体
	cvReleaseCapture(&C_img_R);																												//释放前视的图像结构体
	cvReleaseCapture(&C_img_D);																												//释放前视的图像结构体
	cvDestroyWindow("视频播放");																											//释放显示的窗体   
相关推荐
一 铭20 分钟前
AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
人工智能·语言模型·大模型·llm·prompt
麻雀无能为力4 小时前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心4 小时前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
.30-06Springfield4 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域5 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技6 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_16 小时前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
书玮嘎7 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎7 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊7 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪