赚钱网站有哪些/关键词seo公司真实推荐

赚钱网站有哪些,关键词seo公司真实推荐,凡客达人的运作模式,朋友叫我去柬埔寨做彩票网站推广需要让小车保持车道行驶,首先需要进行车道线识别。 也可参看论文(上传到资源里):自动驾驶汽车车道检测与预测的技术解析-基于图像处理和Hough变换的方法 1 车道识别流程 想进行车道线识别,并且希望在图像中选择一个特…

需要让小车保持车道行驶,首先需要进行车道线识别。

也可参看论文(上传到资源里):自动驾驶汽车车道检测与预测的技术解析-基于图像处理和Hough变换的方法

1 车道识别流程

想进行车道线识别,并且希望在图像中选择一个特定的区域进行处理(例如只处理道路区域),可以通过以下步骤对代码进行修改。我们将使用 ROI(Region of Interest)来限制处理范围,并优化车道线检测的逻辑。

具体步骤:

  1. ROI(Region of Interest):

    • 使用 roi 变量定义感兴趣区域,格式为 [x, y, width, height]

    • 通过 roiFrame = frame(roi(2):roi(2)+roi(4), roi(1):roi(1)+roi(3), :) 提取 ROI 区域。

  1. 高斯滤波:

    • 使用 imgaussfilt 对灰度图像进行高斯滤波,以减少噪声。

  2. Canny 边缘检测:

    • 使用 edge 函数进行 Canny 边缘检测,阈值范围为 [0.1, 0.2],可以根据实际情况调整。

  1. 霍夫变换:

    • 使用 hough 和 houghpeaks 检测直线。

    • 使用 houghlines 提取直线,并设置 FillGap 和 MinLength 参数以过滤短线段。

  1. 坐标转换:

    • 将 ROI 中的直线坐标转换回原图坐标,以便在原图上绘制检测到的车道线。

  2. 绘制车道线:

    • 使用 plot 函数在原图上绘制检测到的车道线。

2 代码

 2.1 实现 车道识别

% 创建一个图形窗口
figure;% 定义 ROI(Region of Interest)
roi = [200, 200, 400, 200]; % [x, y, width, height],根据你的图像调整% 循环处理每一帧
% while(vid.FramesAcquired <= 1000) % 处理1000帧% 获取一帧图像
%     frame = getsnapshot(vid);frame=imread('test.png');imagesc(frame)title('测试图')% 提取 ROI 区域%roiFrame = frame(roi(2):roi(2)+roi(4), roi(1):roi(1)+roi(3), :);shape=size(pic);%图片大小
roi(1)=0.5*shape(1); %x  宽度
roi(2)=0.4*shape(2);%高度 yroiFrame = frame(roi(1) :1*shape(1),roi(2):1*shape(2) ,:);  % 转换为灰度图像grayFrame = rgb2gray(roiFrame);imshow(grayFrame)title('grayframe 感兴趣的区域大小')% 使用高斯滤波去噪filteredFrame = imgaussfilt(grayFrame, 2);% 使用Canny边缘检测edges = edge(filteredFrame, 'Canny', [0.05 0.35]);% 使用霍夫变换检测直线[H, T, R] = hough(edges);P = houghpeaks(H, 5, 'threshold', ceil(0.3 * max(H(:))));lines = houghlines(edges, T, R, P, 'FillGap', 4, 'MinLength', 5);% 在原图上绘制检测到的直线imshow(frame); hold on;for k = 1:length(lines)% 将 ROI 中的坐标转换回原图坐标xy = [lines(k).point1; lines(k).point2];xy(:, 1) = xy(:, 1) + roi(2); % 调整 x 坐标xy(:, 2) = xy(:, 2) + roi(1); % 调整 y 坐标% 绘制直线plot(xy(:,1), xy(:,2), 'LineWidth', 2, 'Color', 'green');endhold off;% 刷新图形窗口drawnow;
% end

2.2 结果

识别的车道线

2.3 车道线合并

  这里需要考虑相邻测线合并的问题。

在车道线检测中,如果遇到相邻车道线(例如左车道线和右车道线),霍夫变换可能会检测到多条线段。如果不加以区分,这些线段可能会被错误地合并为一条车道线。为了解决这个问题,我们需要对检测到的线段进行分类和过滤,确保只保留当前车道的车道线。

% 假设 lines 是 houghlines 函数返回的线段结构体
% lines 包含以下字段:point1, point2, theta, rho% 合并线段的阈值
angleThreshold = 5; % 角度阈值(度)
distanceThreshold = 20; % 距离阈值(像素)% 初始化合并后的线段列表
mergedLines = [];% 遍历所有线段
for i = 1:length(lines)currentLine = lines(i);isMerged = false;% 遍历已合并的线段列表,检查是否可以合并for j = 1:length(mergedLines)mergedLine = mergedLines(j);% 计算两条线段的角度差angleDiff = abs(currentLine.theta - mergedLine.theta);% 计算两条线段的距离差(使用 rho 值)distanceDiff = abs(currentLine.rho - mergedLine.rho);% 如果角度和距离差都在阈值内,则合并线段if angleDiff < angleThreshold && distanceDiff < distanceThreshold% 合并线段:取两个端点的最小和最大坐标mergedLine.point1 = min(currentLine.point1, mergedLine.point1);mergedLine.point2 = max(currentLine.point2, mergedLine.point2);% 更新合并后的线段mergedLines(j) = mergedLine;isMerged = true;break;endend% 如果当前线段没有合并到任何线段中,则添加到合并列表if ~isMergedmergedLines = [mergedLines; currentLine];end
end% 区分左车道线和右车道线
leftLines = [];
rightLines = [];for k = 1:length(mergedLines)line = mergedLines(k);% 计算线段的中点midPoint = (line.point1 + line.point2) / 2;% 根据线段的角度和中点位置分类if line.theta < 0 % 左车道线通常具有负角度leftLines = [leftLines; line];elseif line.theta > 0 % 右车道线通常具有正角度rightLines = [rightLines; line];end
end% 选择最接近图像中心的左车道线和右车道线
imageCenterX = size(frame, 2) / 2; % 图像的水平中心
minLeftDistance = inf;
minRightDistance = inf;
selectedLeftLine = [];
selectedRightLine = [];% 选择最接近图像中心的左车道线
for i = 1:length(leftLines)line = leftLines(i);midPoint = (line.point1 + line.point2) / 2;distance = abs(midPoint(1) - imageCenterX);if distance < minLeftDistanceminLeftDistance = distance;selectedLeftLine = line;end
end% 选择最接近图像中心的右车道线
for i = 1:length(rightLines)line = rightLines(i);midPoint = (line.point1 + line.point2) / 2;distance = abs(midPoint(1) - imageCenterX);if distance < minRightDistanceminRightDistance = distance;selectedRightLine = line;end
end% 绘制选定的左车道线和右车道线
figure;
imagesc(frame); hold on;
if ~isempty(selectedLeftLine)xy = [selectedLeftLine.point1; selectedLeftLine.point2];xy(:, 1) = xy(:, 1) + roi(2); % 调整 x 坐标xy(:, 2) = xy(:, 2) + roi(1); % 调整 y 坐标plot(xy(:,1), xy(:,2), 'LineWidth', 2, 'Color', 'blue');
end
if ~isempty(selectedRightLine)xy = [selectedRightLine.point1; selectedRightLine.point2];xy(:, 1) = xy(:, 1) + roi(2); % 调整 x 坐标xy(:, 2) = xy(:, 2) + roi(1); % 调整 y 坐标plot(xy(:,1), xy(:,2), 'LineWidth', 2, 'Color', 'red');
end%计算中心线hold off;

代码说明

  1. 线段分类:

    • 根据线段的角度 (theta) 和中点位置,将线段分为左车道线和右车道线。

    • 左车道线通常具有负角度,右车道线通常具有正角度。

  2. 选择最接近图像中心的车道线:

    • 计算每条线段的中点,并选择最接近图像水平中心的左车道线和右车道线。

    • 这样可以避免选择相邻车道的车道线。

  3. 绘制车道线:

    • 使用蓝色绘制左车道线,红色绘制右车道线。


参数调整建议

  • 角度分类阈值:

    • 如果车道线的角度分布不明显,可以调整角度分类的阈值。

    • 例如,将左车道线的角度范围设置为 -90° 到 -10°,右车道线的角度范围设置为 10° 到 90°

  • 图像中心范围:

    • 如果车道线距离图像中心较远,可以适当增加选择车道线的范围。

优化方向:

  1. 动态角度分类:

    • 根据车道线的实际分布动态调整角度分类的阈值。

  2. 车道线拟合:

    • 使用多项式拟合(如二次曲线)对选定的车道线进行平滑处理。

  3. 多车道处理:

    • 如果需要检测多车道,可以根据距离和角度进一步分类车道线。

合并结果

3 相机坐标转换

  后续就需要对车道线进行坐标转换,转为车辆坐标系。

相机标定:相机挂在小车上,用棋盘格标定。

下载30mm*30mm棋盘格进行标定 。

参考书籍:Zhengyou Zhang, A Flexible New Technique for Camera Calibration, 掌握标定原理。

待续!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英伟达有哪些支持AI绘画的 工程

英伟达在AI绘画领域布局广泛&#xff0c;其自研工具与第三方合作项目共同构建了完整的技术生态。以下是其核心支持AI绘画的工程及合作项目的详细介绍&#xff1a; 一、英伟达自研AI绘画工具 1. GauGAN系列 技术特点&#xff1a;基于生成对抗网络&#xff08;GAN&#xff09;&…

驱动开发的引入

1.引入 Linux内核的整体架构本就非常庞大&#xff0c;其包含的组件也非常多。而我们怎样把需要的部分都包含在内核中呢? 一种方法是把所有需要的功能都编译到Linux内核中。这会导致两个问题&#xff0c;一是生成的内核会很大&#xff0c;二是如果我们要在现有的内核中新增或删…

Android在kts中简单使用AIDL

Android在kts中简单使用AIDL AIDL相信做Android都有所了解&#xff0c;跨进程通信会经常使用&#xff0c;这里就不展开讲解原理跨进程通信的方式了&#xff0c;最近项目换成kts的方式&#xff0c;于是把aidl也换成了统一的方式&#xff0c;其中遇到了很多问题&#xff0c;这里…

物化视图详解:数据库性能优化的利器

物化视图&#xff08;Materialized View&#xff09;作为数据库性能优化的核心手段&#xff0c;通过预计算和存储查询结果&#xff0c;显著提升了复杂查询的效率。本文将深入剖析物化视图的工作原理、应用场景及最佳实践&#xff0c;帮助企业在合适的场景中充分发挥其性能优势。…

快速入手:Nacos融合SpringCloud成为注册配置中心

快速入手&#xff1a;Nacos融合SpringCloud成为注册配置中心 前言安装Nacos项目搭建添加配置启动类添加注解运行项目服务调用RestTemplate 模式FeignClient 模式 Gateway 网关 前言 Spring Cloud是一系列框架的集合&#xff0c;提供了微服务架构下的各种解决方案&#xff0c;如…

Python | 如何在Pandas中删除常量列

在数据分析中&#xff0c;经常会遇到数据集中始终具有常量值的列&#xff08;即&#xff0c;该列中的所有行包含相同的值&#xff09;。这样的常量列不提供有意义的信息&#xff0c;可以安全地删除而不影响分析。 如&#xff1a; 在本文中&#xff0c;我们将探索如何使用Pyth…

5.高频加热的原理与常用集成电路介绍

一、高频加热的类型 利用高频电源加热通常由两种方法&#xff1a;电介质加热&#xff08;被加热物体绝缘&#xff09;与感应加热&#xff08;被加热物体导电&#xff09;&#xff0c;详细解释如下&#xff1a; 电介质加热&#xff08;利用高频电压的高频电场导致物体自身分子摩…

【中文翻译】第9章-The Algorithmic Foundations of Differential Privacy

由于GitHub项目仅翻译到前5章&#xff0c;我们从第6章开始通过大语言模型翻译&#xff0c;并导出markdown格式。 大模型难免存在错漏&#xff0c;请读者指正。 教材原文地址&#xff1a;https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 9 差分隐私与计算复杂度 到目…

【AI大模型】搭建本地大模型GPT-NeoX:详细步骤及常见问题处理

搭建本地大模型GPT-NeoX:详细步骤及常见问题处理 GPT-NeoX是一个开源的大型语言模型框架,由EleutherAI开发,可用于训练和部署类似GPT-3的大型语言模型。本指南将详细介绍如何在本地环境中搭建GPT-NeoX,并解决过程中可能遇到的常见问题。 1. 系统要求 1.1 硬件要求 1.2 软…

Unity跨平台构建快速回顾

知识点来源&#xff1a;人间自有韬哥在&#xff0c;豆包 目录 一、发布应用程序1. 修改发布必备设置1.1 打开设置面板1.2 修改公司名、游戏项目名、版本号和默认图标1.3 修改 Package Name 和 Minimum API Level 2. 发布应用程序2.1 配置 Build Settings2.2 选择发布选项2.3 构…

低配电脑畅玩《怪物猎人:荒野》,ToDesk云电脑优化从30帧到144帧?

《怪物猎人&#xff1a;荒野&#xff08;Monster Hunter Wilds&#xff09;》自2025年正式发售以来已取得相当亮眼的成绩&#xff0c;仅用三天时间便轻松突破800万销量&#xff0c;目前顺利蝉联周榜冠军&#xff1b;凭借着开放世界的宏大场景和丰富的狩猎玩法&#xff0c;该游戏…

Flink基础简介和安装部署

文章目录 一、Flink基础简介1、什么是Flink2、Flink流处理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上传Flink安装包②启动交互窗口③提交任务测试④访问WebUI页面查看④退出停止集群 一、Flink基础简介 1、什么是Flink Flink是⼀个分布式&#…

【2025】基于ssm+jsp的二手商城系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于SSMJSP的二手商城系统设计与实现系统功能结构图&#xff1a; 课题背景 随着经济的发展和人们生活水平的提高&#xff0c;二手交易市场日益活跃。人们对于闲置物品的处理方式逐渐从传统的废品回收转变为通过二手交易平台进行再利用。这种交易模式不仅能够帮助用户节省开支&a…

幻影星空亮相CAAPA北京展 引领文旅产业升级转型

3月19日&#xff0c;中国游艺机游乐园协会&#xff08;CAAPA&#xff09;主办的2025中国&#xff08;北京&#xff09;国际游乐设施设备博览会及2025北京国际旅游休闲娱乐产业博览会在北京盛大启幕。在这场行业盛会上&#xff0c;广州卓远旗下的“幻影星空”品牌以创新性的虚拟…

银河麒麟桌面版包管理器(二)

以下内容摘自《银河麒麟操作系统进阶应用》一书 APT包管理器 APT是Debian及其派生系统的包管理器&#xff0c;构建在dpkg之上&#xff0c;以其强大的依赖性处理能力和丰富的软件仓库而闻名。APT具有自动解决依赖关系、提供易于使用的命令行工具&#xff08;如apt-get、apt-ca…

Xcode16.1使用MonkeyDev运行Tiktok报错分析

问题1&#xff1a; Build input files cannot be found: /usr/lib/libc.dylib, /usr/lib/libstdc.dylib. Did you forget to declare these files as outputs of any script phases or custom build rules which produce them? 解决办法&#xff1a;在TARGETS的dylib中的Bui…

手机怎么换网络IP有什么用?操作指南与场景应用‌

在数字化时代&#xff0c;手机已经成为我们日常生活中不可或缺的一部分&#xff0c;无论是工作、学习还是娱乐&#xff0c;手机都扮演着至关重要的角色。而在手机的使用过程中&#xff0c;网络IP地址作为设备在互联网上的唯一标识符&#xff0c;其重要性和作用不容忽视。本文将…

CH32V208GBU6沁恒协议栈BUG:在主机Write的同一包notify会造成主机一直Write不成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

unsloth微调QwQ32B(4bit)

unsloth微调QwQ32B(4bit) GPU: 3090 24G unsloth安装部署 pip 安装 pip install unsloth --index https://pypi.mirrors.usrc.edu.cn/simplesource /etc/network_turbopip install --force-reinstall --no-cache-dir --no-deps githttps://github.com/unslothai/unsloth.git​…

Dify 0.15.3 输入变量无法被重新赋值问题-解决方法

目录 一、问题描述 二、解决方法 2.1 原因 2.2 修改源码 2.3 重新打包 dify-api 镜像 2.4 修改 docker-compose.yaml 文件 2.5 重启启动镜像 一、问题描述 Dify 0.15.3 是一个比较稳定的版本&#xff0c;Dify 1.0 是一个大版本更新&#xff0c;目前还有很多 Bug。但是&a…