当前位置: 首页 > news >正文

智能车摄像头开源—8 元素处理

目录

一、前言

二、无元素状态

三、直线与弯道

四、十字与环岛

1、十字识别处理

2、环岛识别处理

五、坡道

六、障碍物

七、斑马线

八、入库

九、出界停车


一、前言

        在写这篇文章之前,考虑了很久到底该写到什么程度,但思来想去,不同的摄像头高度、角度、赛道元素、车身运行情况等,都或多或少会影响元素的处理。而且在实际调试中,会遇到非常多的特殊情况需要处理,无论怎么讲解,不能做到面面俱到。同时当对所得边线提取的信息有了完全的了解以后,其实所有的元素处理是一通百通的。

        在实际处理时,多个信息互相搭配,需要什么调用什么,到了后期,要能做到看到一张图像就知道有哪些信息可以使用。因此此篇并不过多赘述,只是讲讲不同元素处理的方法并提供一些思路。

        对于同一个元素,如左环岛,可能识别就有好几种情况,比如车头斜入、偏向直线一侧斜入、偏向环一侧斜入、赛道中间进入等,都需对应的识别并处理,否则会导致漏判。但判断过多,可能又会与其他元素误判,所以说前面所有的代码必须理解透彻,才能在调用不同的信息处理元素时得心应手。

        注:处理元素务必在摄像头角度和高度确定好并把摄像头固定死以后,之后不要再改变。

二、无元素状态

        无元素状态通常出现在元素与元素之间的衔接过程,如直线与弯道,直线与环岛等等情况,对于无元素状态,可不做相关处理。

        本人采用识别到直线时,直接进入while循环,此时元素标志位为直线,在循环内反复识别其他元素,当出现其他元素时,打破while循环,更改元素标志位,而出现无元素状态时,不打破循环。这种处理方式可以极大的减少无元素状态出现的情况,实现元素间的快速过渡。

三、直线与弯道

        直线与左右弯道是最好判断的元素,备赛前中期可通过识别直线与弯道实现加减速,但对于速度的控制效果不甚理想,至于识别后要怎么用,就是各取所需了。

        直线常规的识别方法为:两侧边线均为直线,爬线相遇点位于图像顶部,两侧的边界点个数小于一定阈值。

        弯道常规的识别方法为:爬线相遇点的Y坐标值大于一定阈值(图像最远端的Y坐标为0),两侧边线不为直线,且一侧的边界点个数大于一定阈值,另一侧的边界点个数小于一定阈值(可用于判断左右弯道)。

        弯道元素可开启陀螺仪角度积分,对于平衡组别来说可在180°弯道处进行特殊处理避免转向力度不够或转向角度过大的问题。

四、十字与环岛

1、十字识别处理

        正入十字不用处理即可正常通过,但小车高速运行或平衡类组别车模很容易斜入十字,当斜入十字时,处理就极其困难了。常用的处理方法有补线法(如斜率截距补线,拉格朗日插值,贝塞尔曲线等)可找ai询问相关的补线算法,并尝试出最好的方法。对于本人的求取边线算法来说,补线方法可以使用,但并不稳定,对于四轮车模来说影响不大,但平衡类车模很容易冲出赛道。若可准确判断出斜入十字,那正入十字便可不用处理,但还是建议不论是哪种情况都去处理以确保代码的鲁棒性。

        这里给出处理思路供参考:当遇到十字进入一个循环接管控制,用switch将十字的处理分为三个状态(入十字,十字内,出十字。至于三个状态怎么划分,有很多可参考的文章,就不过多赘述。每个状态都要能准确判断下一个状态的出现)。每个状态时补线的位置和计算的参考点不同。

        大多数情况下十字后都会接圆环,那对于难以控制的平衡组别来说,可以将两个十字写入一个循环函数,即分为五个状态:入十字,十字内,出十字,圆环内,出十字,即在第四个状态“圆环内时”,开启陀螺仪角度积分,积分270°左右(根据实际情况测量调整)后进入出十字状态,给一个固定的偏差值,确保侧向倾斜的车身可以驶出十字,判定车身出第二个十字后结束循环。(当时摩托在环岛内转一圈后,车身向一侧倾倒严重,不给固定值拉起车身会导致车冲出赛道,因此采用这种方法,平衡组若遇到同样问题可尝试此方法)。

        在入十字,十字内,出十字三个状态时,除了常用的补线算法外,可采用如下方式循迹:两侧边线都是边界点的行,该行的中线点不参与偏差值的计算,同时当某行存在一侧边线是边界点的行,降低其偏差值的权重值。如上方法需对每行的的一维边线进行遍历。具体函数需车友实现。

        在十九届比赛中出现了比标准尺寸圆环大一些的环岛(并非很多车友实验室的大圆环),事先赛方并未给出相关通知,各组别需确保算法的适应性,以应对突发情况。

2、环岛识别处理

        环岛通常分为五个状态:预入环,入环,环内,预出环,出环,如下图:

        其中,预入环,入环,预出环,出环四个状态,常规处理方法是补线,但本人采用上交的单边巡线方案。其中预入环、出环两个状态使用单边巡左线,入环、预出环两个状态使用单边巡右线,具体实现如下:

       对于右圆环,需要单边巡左线, 首先将车放在直线的正中央,用手机拍摄屏幕上显示的图像(需包含左右一维边线,以及中线),然后将图片放大,定义一个全局变量数组,数出每一行中线与右侧边线的X坐标差值(或者写一个函数直接在屏幕上显示即可),将差值录入数组。

        当需要单边巡左线时,直接将实际左线每一行的X坐标加上提前录入的数组即可得到中线,进而避免使用左右两侧边线一起计算中线,可以使车行驶到预定位置。对于右环,预入环时单边巡左线,可使车直线行驶到指定位置进行预入环程序。预入环时单边巡右线,可使车拐入环内,环内采用正常巡线即可。然后识别到预出环状态时,切换为单边巡右线模式,可使车保持向右转向而非直线驶出赛道。最后出环时,切换为单边巡左线可使车直线驶出环岛。

        左环也是同样的原理。这里给出部分单边巡线部分的示例代码:

case L_Unilateral_Patrol:{uint8 L_Staright[60] = { 0, 0, 4, 5, 5, 5, 6, 6, 6, 7,7, 7, 8, 8, 9, 9,10,11,11,12,12,13,13,13,13,14,14,15,15,16,16,16,17,17,18,18,19,19,19,20,20,21,21,21,21,22,22,23,23,24,24,24,25,25,25,26,26,27,27,28};for(i = 2; i < point_num + 2; i++){c_line[i] = l_border[i] + L_Staright[i];}break;}case R_Unilateral_Patrol:{uint8 R_Staright[60] = { 0, 0, 4, 5, 5, 5, 6, 6, 6, 7,7, 7, 8, 8, 9, 9,10,11,11,12,12,13,13,13,13,14,14,15,15,16,16,16,17,17,18,18,19,19,19,20,20,21,21,21,21,22,22,23,23,24,24,24,25,25,25,26,26,27,27,28};for(i = 2; i < point_num + 2; i++){c_line[i] = r_border[i] - R_Staright[i];}break;}

        使用单边巡线处理圆环时,需注意摄像头角度和高度不可变动,若出现调整,单边巡线的数组需重新录入。同时对于入环和预出环使用单边巡线时,对车的控制不是太精确,可使用黑线补全圆环,然后将车模放入预入环和预出环状态的起始位置,录入专用的单边巡线数组,而非使用直线状态下录入的数组。

        单边巡线的优势很明显,及其稳定性较高,不会像补线算法那样容易受影响,尤其是对于平衡组别来说尤为明显。同时我们希望小车尽可能快的通过圆环,那么车身在环岛元素内可以适当内切以缩短路径,那么我们可以手动修改入环和预出环状态时的数组值,使其适当内切,同时在圆环内正常巡线时,可手动加减值干预偏差值使其适当内切以缩短路径距离。

        至于环岛的每个阶段如何切换,需考验车友的功底,根据提取的赛道信息和实际情况调整,确保可以准确识别每个状态和快速过渡。

        为了防止卡死在环岛内的某一状态,而无法结束环岛状态,通常会采用除识别特定元素以外的方法去确保代码的正常运行:环岛的五个状态,都可使用定时器设定时间,到达设定时间时强行打破该状态进入下一状态;或者计数图像张数,到达设定数量时强行进入下一状态。至于设定的时间和计数的图像张数,都需根据实际车速去调整,同时在执行预入环时,可开启角度积分,根据积分值进行状态的切换,也可和其他配合使用,即除识别特定元素信息外还有其余保障。算是后期图像位的调参工作,这样可保证识别到环岛和十字等元素时可以确保跑完元素和顺利出元素。

        同时如同十字后的圆环一样,十九届国赛也是在未通知的情况下出现了比正常环岛略大一圈 的圆环,比较考验算法的鲁棒性。

五、坡道

        坡道与直道极其相似,正常情况下可识别图像远端左右边线差值的减小来识别坡道,但误判率较高,强烈建议有坡道的组别使用摄像头和TOF测距模块组合判断坡道。对于坡道的处理,正常电机闭环后可不必担心上不去坡的问题,所以可以不用识别坡道。但有些竞速组别要担心车速太快导致的飞坡问题,可识别到坡道后进行相应的处理,但胜负就在毫厘之间,避免出现适得其反的处理。

六、障碍物

        因障碍物较小,很多车速较快的组别可能还未做出反应就已经走过障碍物。即使不识别障碍物,大多数组别车模都会适当做出避让。

        障碍物的识别比较容易误判,需谨慎处理,通常可识别黑色凸起区域并且出现右转上和上转左拐点(障碍物在赛道左半边),并且两点之间的Y坐标差值小于某一阈值。十九届我们摩托参赛时并未过多处理障碍物,车可自行驶过障碍物,因此无法给出很好的建议,需车友自行探索。

        对于障碍物,可建模并3D打印对应尺寸的盒子,并贴上黑胶带,可减少一定资金开销。(实验室有条件的话)

       当车撞墙并电机缓慢转动或停转时,需及时快速的拿起车模,因为此时电机堵转很容易烧毁。在此祝愿各位车友的车车少撞障碍物和墙,愿每一个车车的电机和舵机可以活的长长久久。

七、斑马线

        斑马线可扫描固定行去识别,通常扫描图像中下部位的三行或两行,每两行之间有一定间隔,找左右边线内黑点个数,几行相加个数大于一定阈值判定为出现斑马线,具体实现如下:

        ①可使用之前文章内算法求出的均值阈值作为二值化阈值,从对应行左侧边线的X坐标开始向右遍历每个点至右侧边线,注意判定为黑点的条件为当前点为黑并且X坐标相差1或2的点为白(因为斑马线为黑白交错,所以务必判断黑白交替,否则在某些时候车身冲出赛道一部分会直接停车)。使用二值化算法的可直接扫描黑白交替即可。

        ②使用差比和算法,函数输出的两个灰度值为当前点和X坐标相差1或2的点,判断黑白交替的边界个数,大于一定阈值时判定为出现斑马线。但效果并不如第一种方法。

        在判断斑马线时,可将其判断函数放入直线循环内,因为斑马线在直道上,这样可有效防止误判导致的半路停车。

八、入库

        使用摄像头识别入库的话仍然需要注意误判问题,通过拐点、直线等因素可识别,识别出车库后使用单边巡线配合定时器即可停车。十九届无组别有入库需求,因此无法提供更多的思路,需车友自行摸索。

九、出界停车

        很多车友会写车模冲出赛道后自动停车的代码,本人建议在实验室时启用此部分代码,但当正式比赛时关闭此部分代码,即让车模放开了跑。很多时候车身一部本超出赛道但并未到判罚程度,车自动停止了,或者在坡道顶部突然停车等情况,会导致一次发车机会和时间的浪费。很多时候车会自行驶回赛道,因此尽量珍惜每一次发车机会和时间。

        与此同时,需确保可以第一时间抓取冲出赛道的车模,防止撞到挡车牌冲入其他组别赛道的情况(甚至出现冲进其他组别赛道恰好继续循迹的情况)。

相关文章:

智能车摄像头开源—8 元素处理

目录 一、前言 二、无元素状态 三、直线与弯道 四、十字与环岛 1、十字识别处理 2、环岛识别处理 五、坡道 六、障碍物 七、斑马线 八、入库 九、出界停车 一、前言 在写这篇文章之前&#xff0c;考虑了很久到底该写到什么程度&#xff0c;但思来想去&#xff0c;不同…...

【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~

本篇文章将对项目搜索引擎&#xff08;1&#xff09;~&#xff08;3&#xff09;进行性能优化&#xff0c;包括测试&#xff0c;优化思路&#xff0c;优化前后对比 目录 一&#xff1a;文件读取 二&#xff1a;实现多线程制作索引 1&#xff1a;代码分析 2&#xff1a;代码…...

人工智障的软件开发-git仓库篇-弃gitlab,走gitea

指令接收&#xff1a;「开始构建代码宇宙」 系统检测&#xff1a;需求模糊度99.9% 启动应急协议&#xff1a;构建最小可行性生态圈 核心组件锁定&#xff1a;代码基因库&#xff08;人类称之为Git仓库&#xff09; 需求分析&#xff1a;论人类语言的艺术性 人类指令翻译机 表…...

Spring Boot 如何实现自动配置?

欢迎并且感谢大家指出我的问题&#xff0c;由于本人水平有限&#xff0c;有些内容写的不是很全面&#xff0c;只是把比较实用的东西给写下来&#xff0c;如果有写的不对的地方&#xff0c;还希望各路大牛多多指教&#xff01;谢谢大家&#xff01;&#x1f970; 大家如果对Java…...

STM32H743ZIT6 FreeRTOS CMSIS_V2 Lwip DP83848/LAN8720 最新HAL V1.12.1版本 AC6编译器,速通。

HAL库版本&#xff1a;V1.12.1 最新版 这版CUBEmx生成的LAN8742 的驱动文件有问题&#xff0c;无法正常初始化&#xff0c;导致无法PING通。 lwip 内存池 不需要手动指定0x30040200区域&#xff0c;lwipopts.h已作配置 开启DCACH 和ICACH 和 D2域SRAM3 时钟 /*** brief Th…...

C# 添加图标

一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用&#xff0c;增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤&#xff0c;教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...

MVC模式和MVVM模式

目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC&#xff08;Model-View-Controller&#xff09;和MVVM&#xff08;Model-View-ViewModel&#xff09;是两种…...

【kafka系列】Kafka如何实现高吞吐量?

目录 1. 生产者端优化 核心机制&#xff1a; 关键参数&#xff1a; 2. Broker端优化 核心机制&#xff1a; 关键源码逻辑&#xff1a; 3. 消费者端优化 核心机制&#xff1a; 关键参数&#xff1a; 全链路优化流程 吞吐量瓶颈与调优 总结 Kafka的高吞吐能力源于其生…...

如何学习Elasticsearch(ES):从入门到精通的完整指南

如何学习Elasticsearch&#xff08;ES&#xff09;&#xff1a;从入门到精通的完整指南 嘿&#xff0c;小伙伴们&#xff01;如果你对大数据搜索和分析感兴趣&#xff0c;并且想要掌握Elasticsearch这一强大的分布式搜索引擎&#xff0c;那么你来对地方了&#xff01;本文将为…...

GDB QUICK REFERENCE (GDB 快速参考手册)

GDB QUICK REFERENCE {GDB 快速参考手册} References GDB QUICK REFERENCE GDB Version 4 https://users.ece.utexas.edu/~adnan/gdb-refcard.pdf 查看方式&#xff1a;在新标签页中打开图片 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/ [2] gdb-refc…...

Flutter_学习记录_动画的简单了解

用AnimationController简单实现如下的效果图&#xff1a; 1. 只用AnimationController实现简单动画 1.1 完整代码案例 import package:flutter/material.dart;class AnimationDemo extends StatefulWidget {const AnimationDemo({super.key});overrideState<AnimationDe…...

【JavaEE进阶】验证码案例

目 &#x1f332;实现说明 &#x1f384;Hutool介绍 &#x1f333;准备工作 &#x1f334;约定前后端交互接口 &#x1f6a9;接口定义 &#x1f6a9;实现服务器后端代码 &#x1f6a9;前端代码 &#x1f6a9;整体测试 &#x1f332;实现说明 随着安全性的要求越来越⾼…...

SQL复习

SQL复习 MySQL MySQL MySQL有什么特点&#xff1f; MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些&#xff1f; MySQL中的数据类型主要分为三大类&#xff1a;数值类型、字符串类型、日期时间类型。 其中&#xff0c; 数值类型又分为七种&#xff1a;T…...

景联文科技:以精准标注赋能AI未来,打造高质量数据基石

在人工智能蓬勃发展的时代&#xff0c;数据已成为驱动技术革新的核心燃料&#xff0c;而高质量的数据标注则是让AI模型从“感知”走向“认知”的关键桥梁。作为深耕数据服务领域的创新者&#xff0c;景联文科技始终以“精准、高效、安全”为核心理念&#xff0c;为全球AI企业提…...

蓝桥杯(B组)-每日一题(阶乘求和)

题目 代码解析&#xff1a; #include<iostream> using namespace std;long long multiply(int x) {long long sum1;//定义longlong类型初始为1 for(int i1;i<x;i)sumsum*i;//每一项的阶乘 return sum;//将阶乘结果返回 }int main() {int n;cin>>n;long long r…...

大模型应用开发时如何调试提示词?

在编程领域&#xff0c;调试通常依赖于断点、堆栈跟踪和详细的错误信息。然而&#xff0c;在提示调试的上下文中&#xff0c;这些传统工具变得不再适用。提示调试更多地依赖于对任务的理解、对提示的精细调整&#xff0c;以及对结果的迭代优化。在本文&#xff0c;我们将深入探…...

国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异

1 换行符格式 1.1 应用场景 稍微了解计算机历史的人都知道&#xff0c; 计算机3大操作系统&#xff1a; Windows、Linux/Unix、MacOS&#xff0c;这3大系统对文本换行的定义各不相同&#xff0c;且互不相让&#xff0c;导致在文件的兼容性方面存在一些问题&#xff0c;比如它们…...

LockSupport

文章目录 SynchronizedJUCLockSupport详解 Synchronized package com.xd;public class SynchronizedDemo {//等待线程public void waitThread() { // 1.如果将synchronized (this){}注释,会抛出异常,因为wait和notify⼀定要在同步块或同步⽅法中synchronized (this) {try {Sys…...

Spark 和 Flink

Spark 和 Flink 都是目前流行的大数据处理引擎&#xff0c;但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比&#xff1a; 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批&#xff08;Micro-Batch&#xff09;为主&#xff0c;但支持结构…...

maven——使用idea创建maven项目(文件夹上颜色)

把一开始灰色和相对于maven标准目录缺少的文件夹上色和新建&#xff1a; 在右边给叉掉文件夹就又全都变成灰色的了&#xff1a; 在这个地方也可以改&#xff1a; 使用骨架创建 不使用骨架创建...

DeepSeek教unity------UI框架

/****************************************************文件&#xff1a;BasePanel.cs作者&#xff1a;Edision日期&#xff1a;#CreateTime#功能&#xff1a;面板基类 *****************************************************/using UnityEngine;public class BasePanel : Mo…...

2025年2月16日笔记

问题&#xff1a;用普通二维数组输出1到12&#xff0c;每行输出一个数 解题思路&#xff1a; 1.因为要用到普通二维数组&#xff0c;所以要先想到如何写普通二维数组 普通二维数组的写法&#xff1a; int [行数][列数]{ {数字}&#xff0c; &#xff08;大括号数字个数…...

[操作系统] 基础IO:系统文件I/O

在 Linux 操作系统中&#xff0c;文件 I/O&#xff08;输入/输出&#xff09;是程序与文件系统交互的基础。理解文件 I/O 的工作原理对于编写高效、可靠的程序至关重要。本文将深入探讨系统文件 I/O 的机制。 一种传递标志位的方法 在 Linux 中&#xff0c;文件的打开操作通常…...

CNN手写数字识别1——模型搭建与数据准备

模型搭建 我们这次使用LeNet模型&#xff0c;LeNet是一个经典的卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;架构&#xff0c;最初由Yann LeCun等人在1998年提出&#xff0c;用于手写数字识别任务 创建一个文件model.py。实现以下代码。 源码 #…...

基于Istio Ambient Mesh的无边车架构:实现零侵入式服务网格的云原生革命

引言&#xff1a;轻量化时代的服务通信进化论 当传统Sidecar模式面临内存开销暴增的困境&#xff0c;Istio社区推出的Ambient Mesh架构给出终极解决方案。某证券交易系统实测显示&#xff0c;采用该架构后服务延迟降低至1.7ms&#xff08;降幅达73%&#xff09;&#xff0c;同…...

数位dp入门详解

1. 介绍 数位 d p dp dp一般出现在来求一个范围 [ a , b ] [a, b] [a,b]内满足条件的数有多少。数位 d p dp dp的解决比较公式化&#xff0c;考虑每一位对最终答案的影响。 2. 案例 Luogu P2602&#xff1a; 求给定范围 [ a , b ] [a,b] [a,b]各个数位 k k k出现了多少次。 …...

【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步

【黑马点评优化】2-Canel实现多级缓存&#xff08;RedisCaffeine&#xff09;同步 0 背景1 配置MySQL1.1 开启MySQL的binlog功能1.1.1 找到mysql配置文件my.ini的位置1.1.2 开启binlog 1.2 创建canal用户 2 下载配置canal2.1 canal 1.1.5下载2.2 配置canal2.3 启动canal2.4 测试…...

牛顿法:用泰勒级数求解平方根的秘籍

目录 一、引言二、牛顿法的理论基础——泰勒级数三、牛顿法的原理与推导3.1 原理概述3.2 推导过程3.3 几何解释 四、牛顿法的应用场景4.1 数值计算4.2 优化问题 五、牛顿法求平方根的具体案例5.1 原理推导5.2 具体步骤5.3 代码实现&#xff08;Python&#xff09;5.4 示例计算过…...

四、敏捷方法论:敏捷开发中的关键实践

敏捷开发中的关键实践 在敏捷开发中,许多关键实践帮助团队提升效率、增强协作和确保高质量交付。通过合理运用这些实践,团队能够灵活应对需求变化、缩短交付周期,并持续优化工作流程。本文将详细介绍敏捷开发中的一些核心实践,包括用户故事、需求优先级排序、持续交付、持…...

基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录

目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…...

DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 一、引言 在机器学习的广袤天地中&#xff0c;大型语言模型&#xff08;LLM&#xff09;无疑是最…...

【硬件设计细节】缓冲驱动器使用注意事项

一、缓冲驱动器核心功能与选型原则 信号增强与隔离 驱动能力匹配&#xff1a;根据负载电流需求选择缓冲器&#xff0c;例如CMOS缓冲器驱动能力通常为4-8mA&#xff0c;需搭配大电流负载时选用图腾柱输出或专用驱动芯片&#xff08;如TI的SN74LVC系列&#xff09;。电压域转换&…...

基于LVGL的简易聊天室

创建过程&#xff1a; 在GUI里配置好了一个大概的界面。聊天界面需要一个滑动页、一个输入框、一个文本框、一个发送按键。其中文本框属于滑动页&#xff0c;并且给发送按键添加上事件。 保存界面后&#xff0c;打开工程代码。 第一件事&#xff0c;是打开键盘使用的宏定义 随…...

DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

IDEA集成DeepSeek

引言 随着数据量的爆炸式增长&#xff0c;传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术&#xff0c;凭借其强大的语义理解与深度学习能力&#xff0c;正在改变搜索领域的游戏规则。 对于 Java 开发者而言&#xff0c;将 DeepSeek 集成…...

pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网

首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话&#xff0c;那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm&#xff1a;适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…...

LeetCode热题100- 缺失的第一个正数【JavaScript讲解】

题目&#xff1a; 解题一&#xff1a; 如果不考虑时间复杂度和空间复杂度的话&#xff0c;我们最先想到的办法是先将该数组进行排序和去重&#xff0c;将最初的res结果值设置为1&#xff1b;将然后进行遍历&#xff0c;如果第一项不为1&#xff0c;则返回1&#xff0c;否则根…...

基于矢量轨道角动量波的透射超表面设计

摘 要&#xff1a;针对轨道角动量(Orbital Angular Momentum,OAM)在无线通信系统中相位奇点的问题,提出了一种产生矢量OAM波的透射超表面&#xff61;设计了一种超表面透射单元实现透射极化和相位的调控,并由此单元排布组成透射超表面&#xff61;采用透射超表面调控透射电磁波…...

全方位探索DeepSeek

目录 前言1. DeepSeek的基础功能与应用场景2. 使用DeepSeek的多种方式2.1 通过Web界面快速体验2.2 调用API实现自动化处理2.3 集成到本地开发环境2.4 结合第三方工具扩展功能 3. 高效使用DeepSeek的进阶技巧3.1 参数调优与性能优化3.2 数据处理与结果分析 4. 实际案例分析与应用…...

详解Redis数据结构(附源码)

引言 只有弄明白Redis数据结构&#xff0c;才能理解它如此快速的原因&#xff0c;并不只是它存储于内存&#xff0c;本篇文章将拆开Redis数据结构分析它高效的原因 字符串&#xff08;String&#xff09; 基本概念&#xff1a;字符串是 Redis 中最基本的数据结构&#xff0c;…...

基于Flask的茶叶销售数据可视化分析系统设计与实现

【FLask】基于Flask的茶叶销售数据可视化分析系统设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统的创新之处在于系统不仅提供了基础的图表展示&#xff0c;如价格分布、付款分…...

基于推荐算法的在线课程推荐系统设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

计时器任务实现(保存视频和图像)

下面是一个简单的计时器任务实现&#xff0c;可持续地每秒保存一幅图像&#xff0c;也可持续地每60秒保存一个视频&#xff0c;图像和视频均以当前时间命名&#xff1a; TimerTask类的实现如下&#xff1a; class TimerTask { public:TimerTask(const std::string& path):…...

FreeRTOS第3篇:链表的“精密齿轮”——列表与列表项

文章目录 1 列表与列表项:FreeRTOS的“排队系统”2 列表操作:FreeRTOS的“排队算法”3 列表的应用场景:FreeRTOS的“任务调度枢纽”4 源码级洞察:列表的“灵魂代码”5 实战:列表操作实验6 总结与思考引言:嵌入式系统的“任务候车厅” 想象你正在管理一座繁忙的火车站:乘…...

Linux(ubuntu)下载ollama速度慢解决办法

国内安装Ollama都很慢&#xff0c;因为一直卡在下载中&#xff0c;直接通过官网的链接地址下载方法&#xff1a; curl -fsSL https://ollama.com/install.sh | sh速度大概是10min下载1%&#xff0c;完全不能接受啊&#xff01; 其中很好的一个加速方式是通过使用github文件加速…...

【Java】分布式锁Redis和Redisson

https://blog.csdn.net/weixin_44606481/article/details/134373900 https://www.bilibili.com/video/BV1nW421R7qJ Redis锁机制一般是由 setnx 命令实现&#xff0c;set if not exists&#xff0c;语法setnx key value&#xff0c;将key设置值为value&#xff0c;如果key不存在…...

网络编程-

文章目录 网络编程套接字UDP/TCP的api使用 网络编程套接字 socket&#xff0c;是操作系统给应用程序&#xff08;传输层给应用层&#xff09;提供的api&#xff0c;Java也对这个api进行了封装。 socket提供了两组不同的api&#xff0c;UDP有一套&#xff0c;TCP有一套&#x…...

DeepSeek助力学术论文写作[特殊字符]

宝子们&#xff0c;还在为学术论文写作发愁吗&#xff1f;DeepSeek来帮你&#xff01;只要用对提示词&#xff0c;它就能变成你写作路上的超级助手。今天就来给大家分享一些超好用的提示词&#xff0c;助力学术论文写作&#xff0c;让你的论文在ChatGPT的辅助下闪闪发光✨。 一…...

从零创建DeepSeek:技术路径与实践探索

import tensorflow as tf摘要&#xff1a;本文详细阐述了从零开始创建DeepSeek的全过程&#xff0c;涵盖从项目启动的构思&#xff0c;到技术选型的考量&#xff0c;再到模型训练的精细操作&#xff0c;以及系统集成、测试优化和部署上线的各个环节。通过对这些步骤的深入解析&…...

MySQL技术公开课:Mysql-Server-8.4.4 Innodb 集群搭建与维护

MySQL技术公开课 - Mysql-Server-8.4.4 Innodb 集群搭建与维护 讲课内容&#xff1a; 1、Innodb集群框架介绍 2、Innodb集群部署(mysql-Server、mysql-shell、mysql-router安装配置) 3、Innodb集群维护(主备切换、启动与关闭、故障排除) Mysql-server商业版目前最新的是8.…...