自动驾驶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("视频播放");																											//释放显示的窗体   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/788499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第226题翻转二叉树

题目: 题解: class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) {return nullptr;}TreeNode* left invertTree(root->left);TreeNode* right invertTree(root->right);root->left right;root->right …

内网信息收集:手动、脚本和工具查IP、端口

1.手动查IP和端口 2.工具查IP 3.工具查端口 我们在内网中拿下目标机器后,需要进行一系列的信息收集,以下为总结的收集方法 1.手动信息收集: 以下命令在CS执行时命令前须加shell,如:shell ipconfig 1.收集IP网卡: ip…

【UE5.3】笔记9

1、如何将BSP笔刷转换为静态网格体? 在笔刷的细节的高级里面找到创建静态网格体; 2、如何将自己创建的一个由多个网格体或其他组件组合成的道具转换为个整体即蓝图类?---即把多个Actor转换成蓝图类 选中所要整合的对象,要全选中…

基于Spring Boot的旅游信息推荐信息系统设计与实现(源码+lw+部署+讲解)

技术指标 开发语言:Java 框架:Spring BootJSP JDK版本:JDK1.8 数据库:MySQL5.7 数据库工具:Navicat16 开发软件:IDEA Maven包:Maven3.6.3 浏览器:IE浏览器 功能描述 旅游信…

压缩感知3——重构算法正交匹配追踪算法

算法流程 问题的实质是&#xff1a;AX Y 求解&#xff08;A是M维&#xff0c;Y是N维且N>>M并且稀疏度K<M&#xff09;明显X有无穷多解&#xff0c;重构过程是M次采样得到的采样值升维的过程。OMP算法的具体步骤&#xff1a;(1)用X表示信号&#xff0c;初始化残差e0 …

bash: redi-cli: 未找到命令...

问题描述 在执行命令&#xff1a;redi-cli --bigkeys 提示&#xff1a;bash: redi-cli: 未找到命令... 确定服务器是否有Redis进程 ps -ef | grep redis查找Redis 文件信息 find / -name "redis-*"进入到当前目录 cd /usr/bin/再次执行命令 涉及redis-cli 连…

GOJS去除水印

GOJS gojs 去除水印 **查找go.js库搜索下面这段文本 String.fromCharCode(a.charCodeAt(g)^b[(b[c]b[d])%256]) 加入这段文本 if(f.indexOf(GoJS 2.1 evaluation)>-1|| f.indexOf(© 1998-2021 Northwoods Software)>-1|| f.indexOf(Not for distribution or produ…

最新知识付费系统3.0整站+自动采集同步插件

支持分类替换 将主站同步过来的文章分类进行替换 支持自定义文章作者&#xff08;选择多个作者则同步到的文章作者将会随机分配&#xff09; 支持添加黑名单分类 添加后 如果同步过来的文章包含黑名单分类将不会发布文章 自动检测同步&#xff0c;无需人工值守以及挂采集软件…

Ensp配置防火墙的web界面

Ensp配置防火墙的web界面 准备工作新建网卡配置网卡 启动防火墙配置防火墙注意事项和错误如果云里面没有网卡选项防火墙启动不了没有web界面启动不了没有web界面 准备工作 新建网卡 我用的是win10系统&#xff0c;新建网卡 先右键管理 再点击设备管理器 --- 再网络适配器 接…

Vue核心 — Vue2响应式原理和核心源码解析(核心中的核心)

一、前置知识 1、Vue 核心概念 Vue 是什么? Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。 Vue 核心特点是什么? 响应式数据绑定:…

5.更多

发现一个项目与 MkDocs 类似的项目 PyMdown 拓展文档 &#xff0c;等待探索。 1.排版模仿 以下网站使用 MkDocs 构建 Material for MkDocs 的美化 - Charles Les Notebook (charleschile.com) Documentation - Home Assistant (home-assistant.io) Godot Docs – master bra…

大话光学原理:3.干涉与衍射

一、干涉 这是一束孤独的光&#xff0c;在真空的无垠中悄无声息地穿行。忽然&#xff0c;一堵高耸的墙壁挡住了它的去路&#xff0c;它别无选择&#xff0c;只能硬着头皮冲撞而去。在摸索中&#xff0c;它意外地发现墙壁上竟有两道孔隙&#xff0c;笔直而细长&#xff0c;宛如量…

VBA实现Excel数据排序功能

前言 本节会介绍使用VBA如何实现Excel工作表中数据的排序功能。 本节会通过下表数据内容为例进行实操&#xff1a; 1. Sort 单列排序 语法&#xff1a;Sort key1,Order1 说明&#xff1a; Key1&#xff1a;表示需要按照哪列进行排序 Order1&#xff1a;用来指定是升序xlAsce…

个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)

目录 一、效果展示 二、项目概述 三、手把手快速搭建实现本项目 3.1 前端实现 3.2 后端方向 五、后续开发计划 一、效果展示 默认展示 一般对话展示&#xff1a; 代码对话展示&#xff1a; 二、项目概述 本项目是一个基于Web的智能对话服务平台&#xff0c;通过后端与第…

Webpack: 模块编译打包及运行时Runtime逻辑

概述 回顾最近几节内容&#xff0c;Webpack 运行过程中首先会根据 Module 之间的引用关系构建 ModuleGraph 对象&#xff1b;接下来按照若干内置规则将 Module 组织进不同 Chunk 对象中&#xff0c;形成 ChunkGraph 关系图。 接着&#xff0c;构建流程将来到最后一个重要步骤…

JVM内存泄露的ThreadLocal详解

目录 一、为什么要有ThreadLocal 二、ThreadLocal的使用 三、实现解析 实现分析 具体实现 Hash冲突的解决 开放定址法 链地址法 再哈希法 建立公共溢出区 四、引发的内存泄漏分析 内存泄漏的现象 分析 总结 错误使用ThreadLocal导致线程不安全 一、为什么要有Thr…

STM32F103RB多通道ADC转换功能实现(DMA)

目录 概述 1 硬件 1.1 硬件实物介绍 1.2 nucleo-f103rb 1.3 软件版本 2 软件实现 2.1 STM32Cube配置参数 2.2 项目代码 3 功能代码实现 3.1 ADC功能函数 3.2 函数调用 4 测试 4.1 DMA配置data width&#xff1a;byte 4.2 DMA配置data width&#xff1a;Half wor…

javascript DOM BOM 笔记

Web API API的概念 API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细…

使用esptool工具备份ESP32的固件(从芯片中备份下来固件)

本文以Windows电脑为例 板子为esp32-c3 1下载python 可在官网中下载,此处不进行讲解 使用如下代码查看是否安装了 Python&#xff08;终端输入&#xff09; python 2下载esptool 在终端输入如下代码即可下载 使用 pip&#xff08;推荐&#xff09;: 在你已经安装的 Pyth…

【大模型LLM面试合集】大语言模型架构_layer_normalization

2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢&#xff1f; 在深度神经网络训练的过程中&#xff0c;通常以输入网络的每一个mini-batch进行训练&#xff0c;这样每个batch具有不同的分布&#xff0c;使模型训练起来特别困难。Internal Covariat…