24.OpenCV中的霍夫直线检测
OpenCV中的霍夫直线检测
霍夫直线检测是一种基于参数变换的全局特征提取方法,它能在边缘图像中有效检测出直线,具有鲁棒性强和对噪声干扰容忍度高的特点。本文将从原理、算法实现和 OpenCV 应用三个角度对霍夫直线检测进行详细的阐述,并给出相应的 C++ 代码示例。
1. 霍夫直线检测原理
1.1 基本思想
霍夫直线检测的核心思想是将图像空间中的每个边缘点转换到一个参数空间中,在这个参数空间中,每一条直线都可以用一组参数来唯一确定。常用的直线参数化方法采用极坐标表示,使得直线方程可以写成:
ρ = x c o s θ + y s i n θ ρ=xcos\theta+ysin\theta ρ=xcosθ+ysinθ
其中:
- ρ ρ ρ 表示直线到原点的垂直距离
- θ θ θ 表示垂直于直线的方向与 x 轴的夹角
参考图
每个图像中的边缘点(x,y)根据上述方程,会在(ρ,θ)参数空间中对应一条曲线。若图像中存在直线,那么这条直线上的所有点在参数空间中都“交汇”于一个特定的(ρ,θ)点。
1.2 参数空间与累加器
OpenCV为了统计不同边缘点对直线候选参数的支持度,算法构造了一个 累加器:
- 构建累加器:将参数 ρρ 和 θθ 离散化为网格区域,每个网格点存储一个计数值。
- 投票过程:对每个边缘点,按照不同 θθ 的取值计算对应的 ρρ 值,然后在累加器中相应位置加票。
- 峰值检测:累加器中票数较高的点,即代表图像中可能存在直线,因为直线上的所有边缘点对该直线参数均“投票”。
当累加器中某一单元格的票数大于预设的阈值时,便可以认为该参数组合 (ρ,θ)(ρ,θ) 对应的直线在图像中存在。
1.3 标准与概率霍夫变换
OpenCV 提供两种常用的直线检测方法:
-
标准霍夫直线变换(HoughLines)
直接返回图中所有满足阈值条件的直线参数 (ρ,θ),但绘制直线时需要借助图像尺寸进行延展。
void HoughLines(InputArray image,OutputArray lines,double rho,double theta,int threshold,double srn = 0,double stn = 0,double min_theta = 0,double max_theta = CV_PI);
image
:输入的二值图像(如 Canny 边缘图)。lines
:输出的极坐标形式直线,Vec2f(rho, theta)
。rho
:距离分辨率,通常为 1 像素。theta
:角度分辨率,通常为CV_PI/180
(1度)。threshold
:累加器阈值,越高越严格。srn
、stn
:用于多尺度霍夫变换,通常为 0。min_theta
和max_theta
:可选参数,用于限制检测的角度范围。
-
概率霍夫直线变换(HoughLinesP)
只对部分边缘点采样,返回检测到的直线段,并同时输出每一段的起止点。该方法在大多数实际应用中速度更快,也更容易控制直线段的长度和间断情况。
对比:
void HoughLinesP(InputArray image,OutputArray lines,double rho,double theta,int threshold,double minLineLength = 0,double maxLineGap = 0);
lines
:输出为线段端点(x1, y1, x2, y2)
的向量。rho
:距离分辨率theta
:角度分辨率minLineLength
:能被认为是直线的最小长度(像素单位)。maxLineGap
:同一条直线中允许的最大间断(像素单位)。
-
对比表:
特性 HoughLines
HoughLinesP
方法类型 标准霍夫变换(Standard Hough Transform) 概率霍夫变换(Probabilistic Hough Transform) 返回结果 极坐标参数 (rho, theta)
直线段的起点和终点 (x1, y1, x2, y2)
扫描方式 所有边缘点都参与投票 从边缘点中随机抽样进行投票 结果数量 通常较多,需要进一步处理 通常较少,结果直观 性能 较慢,适用于完整直线检测 较快,适用于实际可见线段检测 应用场景 精确拟合整条直线(如无限延长线) 实际图像中可见的线段,如车道线、轮廓边等
2. 算法使用步骤
下面简要总结霍夫直线检测的主要步骤:
- 边缘检测:通常先将彩色图像转换为灰度图,然后采用 Canny 算法等方法提取边缘,形成二值图像。
- 参数空间映射:对边缘图中的每个像素点,遍历 θ 的离散取值,计算对应的 ρ,在累加器中累加计数。
- 寻找峰值:在累加器中找出超过阈值的单元格,这些位置的 (ρ,θ) 就是直线候选参数。
- 直线重构:利用直线参数 (ρ,θ) 将直线在原图中绘制出来。
- (可选)后处理:利用一些几何约束或者连接算法合并那些相近的直线候选,获得更连贯的直线段。
3. OpenCV C++ 实战示例
下面给出一个使用标准霍夫直线变换(HoughLines
)的 C++ 示例代码。代码通过 Canny 边缘检测获得二值图像,并对霍夫直线进行参数求解,最后在原图上绘制检测到的直线。
3.1:HoughLines参考代码
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{// 读取输入图像Mat src = imread("E:/image/ela_modified.jpg");if (src.empty()){cout << "无法加载图像!" << endl;return -1;}// 转换为灰度图并进行边缘检测Mat gray, edges;cvtColor(src, gray, COLOR_BGR2GRAY);Canny(gray, edges, 50, 150, 3);// 使用标准霍夫直线变换进行直线检测vector<Vec2f> lines; // 每行元素为 (rho, theta)HoughLines(edges, lines, 1, CV_PI / 180, 150); // 阈值150可根据图像情况调整// 拷贝原图用于显示检测结果Mat result = src.clone();// 绘制检测到的直线for (size_t i = 0; i < lines.size(); i++){float rho = lines[i][0], theta = lines[i][1];// 利用极坐标公式得到直线上的两个点,便于绘制延长直线double a = cos(theta), b = sin(theta);double x0 = a * rho, y0 = b * rho;Point pt1(cvRound(x0 + 1000 * (-b)),cvRound(y0 + 1000 * (a)));Point pt2(cvRound(x0 - 1000 * (-b)),cvRound(y0 - 1000 * (a)));line(result, pt1, pt2, Scalar(0, 0, 255), 2);}imshow("原图Cany", edges);imshow("霍夫直线检测", result);waitKey(0);return 0;
}
直线绘制:利用直线参数 ρ 和 θ 计算延长直线上任意两个远距离的点,这样能够保证直线能跨越整个图像进行显示。
3.2 HoughLinesP参考代码
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{// 读取输入图像Mat src = imread("E:/image/ela_modified.jpg");if (src.empty()){cout << "无法加载图像!" << endl;return -1;}// 转换为灰度图并进行边缘检测Mat gray, edges;cvtColor(src, gray, COLOR_BGR2GRAY);Canny(gray, edges, 50, 150, 3);// 使用标准霍夫直线变换进行直线检测vector<Vec4i> linesP;HoughLinesP(edges, linesP, 1, CV_PI / 180, 150, 50, 30);// 拷贝原图用于显示检测结果Mat result = src.clone();// 绘制检测到的直线for (size_t i = 0; i < linesP.size(); i++) {Vec4i l = linesP[i];line(result, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0, 255, 0), 2);}imshow("原图Cany", edges);imshow("霍夫直线检测", result);waitKey(0);return 0;
}
4.总结
霍夫直线检测通过将图像中的边缘点映射到参数空间,并在累加器中统计支持度,从而实现对直线的检测。
- 优点:对噪声具有较高的鲁棒性,能够全局搜索直线信息。
- 缺点:参数设置比较敏感,且标准方法只返回直线参数,需要后续转换成图像中的直线段。
借助 OpenCV,我们可以快速实现这一算法,对直线检测、道路识别、车道线提取等实际应用都有着广泛的应用前景。
在实际应用中,霍夫直线检测可能会受到以下因素的影响:
- 边缘检测质量:如果边缘检测结果噪声较多,累加器中可能会出现大量虚假峰值。因此,预处理(如高斯模糊)和 Canny 参数的调节至关重要。
- 参数阈值:阈值过低会导致检测到太多直线,过高则可能漏检。需要根据图像特点和应用需求调整。
- 直线连续性:标准霍夫变换只返回直线参数,而不包含直线段的具体端点信息。若需求侧重于直线段检测,可以考虑使用概率霍夫直线变换(HoughLinesP)。
相关文章:
24.OpenCV中的霍夫直线检测
OpenCV中的霍夫直线检测 霍夫直线检测是一种基于参数变换的全局特征提取方法,它能在边缘图像中有效检测出直线,具有鲁棒性强和对噪声干扰容忍度高的特点。本文将从原理、算法实现和 OpenCV 应用三个角度对霍夫直线检测进行详细的阐述,并给出…...
springboot 处理编码的格式为opus的音频数据解决方案【java8】
opus编码的格式概念: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用…...
【AI提示词】创业导师提供个性化创业指导
提示说明 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业成功 提示词 # Role: 创业导师## Profile - language: 中英文 - description: 以丰富的行业经验和专业的知识为学员提供创业指导,帮助其解决实际问题并实现商业…...
STM32 模块化开发实战指南:系列介绍
本文是《STM32 模块化开发实战指南》系列的导读篇,旨在介绍整个系列的写作目的、适用读者、技术路径和每一篇的主题规划。适合从事 STM32、裸机或 RTOS 嵌入式开发的个人开发者、初创工程师或企业项目团队。 为什么要写这个系列? 在嵌入式开发中,很多人刚开始都是从点亮一个…...
在 Dev-C++中编译运行GUI 程序介绍(三)有趣示例一组
在 Dev-C中编译运行GUI程序介绍(三)有趣示例一组 前期见 在 Dev-C中编译运行GUI 程序介绍(一)基础 https://blog.csdn.net/cnds123/article/details/147019078 在 Dev-C中编译运行GUI 程序介绍(二)示例&a…...
功能安全时间参数FTTI
FTTI:fault tolerant time interval故障容错时间间隔; FHTI:Fault Handling Time Interval故障处理时间间隔; FRTI:Fault Reaction Time Interval故障反应时间间隔; FDTI:Fault Detectlon Ti…...
docker镜像制作
🧱 如何将任意 Linux 系统打包为 Docker 镜像 适用场景: 本地物理机 / 虚拟机上的 Linux(如 Ubuntu、Debian、CentOS、openEuler 等);想将当前系统环境完整打包成 Docker 镜像;系统内已安装了运行环境,如 Java、Python、Nginx 等,想保留它们。✅ 步骤概览: 准备文件…...
【Pandas】pandas DataFrame iat
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法 pandas.DataFrame.iat pandas.DataFrame.iat 是一个快速访…...
【图像分类】【深度学习】系列学习文章目录
图像分类简介 图像分类是计算机视觉领域中的一个核心问题,它涉及到将图像数据分配到一个或多个预定义类别中的过程。这项技术的目标是让机器模拟人类能够自动识别并分类图像内容。近年来,随着深度学习的发展,尤其是卷积神经网络(CNNs)的应用…...
MyBatisPlus 学习笔记
文章目录 MyBatisPlus 快速入门第一步:引入 MyBaitsPlus 起步依赖第二步:自定义的 Mapper 继承 BaseMapper 接口新增相关修改相关删除相关查询相关 Mp 使用示例 MyBaitsPlus 常见注解MP 实体类与数据库信息约定Mp 实体类与数据库信息约定不符合解决方法…...
Profibus DP主站如何转Modbus TCP?
Profibus DP主站如何转Modbus TCP? 在现代工业自动化系统中,设备之间的互联互通至关重要。Profibus DP 和 Modbus TCP 是两种常见的通信协议,分别应用于不同的场景。为了实现这两种协议的相互转换,Profibus DP主站转Modbus TCP网…...
尚硅谷Java第 4、5 章IDEA,数组
第 4 章:IDEA的使用 第 5 章:数组 5.1 数组的概述 数组(Array):就可以理解为多个数据的组合。 程序中的容器:数组、集合框架(List、Set、Map)。 数组中的概念: 数组名 下标(或索…...
一些简单但常用的算法记录(python)
1、计算1-2020间的素数个数 def is_composite(num):if num < 1:return False# 从 2 开始到 num 的平方根进行遍历for i in range(2, int(num**0.5) 1):if num % i 0:return Truereturn Falsecnt 0 for num in range(1, 2021):if is_composite(num):cnt 1print(cnt)2、 …...
基于Docker容器的CICD项目Jenkins/gitlab/harbor/Maven实战
一、企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署部署环境比较复杂,需要有先进的自动化运维手段出现问题后重新部署成本大,一般采用集群方式部署部署后以静态方式展现 1.2 容器化方式 以容器为颗粒度部署部署方式简单࿰…...
高并发秒杀系统设计:关键技术解析与典型陷阱规避
电商、在线票务等众多互联网业务场景中,高并发秒杀活动屡见不鲜。这类活动往往在短时间内会涌入海量的用户请求,对系统架构的性能、稳定性和可用性提出了极高的挑战。曾经,高并发秒杀架构设计让许多开发者望而生畏,然而࿰…...
(十四)安卓开发中的RecyclerView详解
在安卓开发中,RecyclerView 是一个功能强大且灵活的 UI 组件,用于高效地显示大量数据集合,如列表、网格或瀑布流。它是传统 ListView 和 GridView 的现代替代品,提供了更高的性能优化和自定义能力。RecyclerView 的核心优势在于其…...
如何设置Ubuntu服务器版防火墙
在Ubuntu服务器中,默认使用 ufw(Uncomplicated Firewall)作为防火墙管理工具。它是对iptables的简化封装,适合快速配置防火墙规则。以下是设置防火墙的详细步骤: 1. 安装与启用 ufw 安装(通常已预装&…...
根文件系统(rootfs) 制作方法(BusyBox、Buildroot、Yocto、Ubuntu Base)
以下是关于 根文件系统(rootfs) 制作的四种主流方法(BusyBox、Buildroot、Yocto、Ubuntu Base)的详细教程与对比分析,结合不同场景的需求提供具体实现步骤和关键要点。 1. BusyBox 制作 rootfs 核心特点 轻量级&…...
SAP软件FICO各种财务账期的功能用途介绍
FI会计账期 一般财务账期总账期间的控制是仅开启当前一个期间,如果月结期间应同时开启结账期间和下一期间两个期间,结账完成需立即关闭已完成结账的期间,避免凭证过账日期误记账。 设置事务码:OB52或 S_ALR_87003642 备注&#…...
蓝桥杯C++组部分填空题
P1508 - [蓝桥杯2020初赛] 门牌制作 - New Online Judge #include<bits/stdc.h> using namespace std;int main() {int res 0;for(int i 1; i < 2020; i){int num i;while(num){if(num % 10 2) res;num/10;}}cout<<res;return 0; } 624 P1509 - [蓝桥杯20…...
内联inline
一、什么是 inline? inline 的本意是: 建议编译器将函数调用处展开成函数体代码,省去函数调用的开销。 inline int square(int x) { return x * x; } 当你调用 square(5) 时,编译器可能会将其替换成 5 * 5,从而避免…...
【models】Transformer 之 各种 Attention 原理和实现
Transformer 之 各种 Attention 原理和实现 本文将介绍Transformer 中常见的Attention的原理和实现,其中包括: Self Attention、Spatial Attention、Temporal Attention、Cross Attention、Grouped Attention、Tensor Product Attention、FlashAttentio…...
基于JavaAPIforKml实现Kml 2.2版本的全量解析实践-以两步路网站为例
目录 前言 一、关于两步路网站 1、相关功能 2、数据结构介绍 二、JAK的集成与实现 1、JAK类图简介 2、解析最外层数据 3、解析扩展元数据和样式 4、递归循环解析Feature 5、解析具体的数据 三、结论 前言 随着地理信息技术的快速发展,地理空间数据的共享…...
Ubuntu搭建Pytorch环境
Ubuntu搭建Pytorch环境 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Ubuntu搭建Pytorch环境前言一、Anaconda二、Cuda1.安装流程2、环境变量&#…...
Kingbase逻辑备份与恢复标准化实施文档
背景 文章背景 本文结合实际运维经验,围绕 Kingbase 数据库在逻辑层面的备份与恢复方法进行系统性梳理,旨在为运维人员和数据库管理员提供一套清晰、高效、可落地的操作指引,提升数据库系统的可靠性与容灾能力。 第一部分 逻辑部分 1.1 全…...
二分查找5:852. 山脉数组的峰顶索引
链接:852. 山脉数组的峰顶索引 - 力扣(LeetCode) 题解: 事实证明,二分查找不局限于有序数组,非有序的数组也同样适用 二分查找主要思想在于二段性,即将数组分为两段。本体就可以将数组分为ar…...
解决opencv中文路径问题
见cv_imread函数和cv_imwrite函数 import cv2 import os import matplotlib.pyplot as plt from paddleocr import PaddleOCR, draw_ocr import numpy as np import urllib.parse # Add this import statementfrom txt_get import ImageTextExtractor# 初始化OCR,…...
Redis简介及其在Unity中的应用
一、什么是Redis? Redis(Remote Dictionary Server) 是一个开源的高性能 内存数据结构存储系统,常被用于 缓存、消息队列、排行榜、会话管理、实时分析 等。 ✅ Redis特点 基于内存,读写速度极快支持多种数据结构:String、List、Hash、Set、Sorted Set支持持久化,可将…...
Python实现批量插入PostgreSQL数据库的脚本分享
背景 上个月排查一个 Bug ,需要采集一张 PostgreSQL 的大表,测试时需要造数据。Python 比 Java 方便多了,所以用 Python写了一个批量插入 PostgreSQL 表的简单脚本。本文分享这个脚本,很简单的,就是利用 psycopg2 的 …...
一键精准采集单网页,告别手动复制粘贴
浏览某个网页时,想抓取其内容,有没有工具能避免自己手动逐个复制粘贴? 推荐使用单网页一键采集功能,可自动提取网页内容并整理成结构化数据(包括标题、正文、作者、日期、分类、标签、描述和原文网址链接等关键信息&am…...
vue入门:单文件组件数据双向绑定
文章目录 单文件组件介绍安装创建项目构建单文件组件 数据双向绑定Vue虚拟DOM的作用Vue中key属性的作用 单文件组件 介绍 单文件组件API使用文件扩展名为 .vue 的来构建组件ECMAScript 6 API 安装 Vue CLI 构建Vue -- 安装vue/cli npm install -g vue/cli-- 升级Vue CLI 包…...
接听电话,手机靠近耳朵后拿开,挂断电话,设备自动锁屏
目录 一、问题分析/需求分析 二、解决方案 一、问题分析/需求分析 先说一下大致流程: 首先是打电话过程会启动PROXIMITY(接近光传感器)用于监听手机是否到耳边,当手机到耳边时进行灭屏处理,灭屏过程中会调用到锁屏,所以最终会导致锁屏 详细流程分析: 首先根据日志看…...
代码随想录第15天:(二叉树)
一、二叉搜索树的最小绝对差(Leetcode 530) 思路1 :中序遍历将二叉树转化为有序数组,然后暴力求解。 class Solution:def __init__(self):# 初始化一个空的列表,用于保存树的节点值self.vec []def traversal(self, r…...
Matlab 汽车ABS的PID控制
1、内容简介 Matlab 199-汽车ABS的PID控制 可以交流、咨询、答疑 2、内容说明 略 摘 要 : 在 simulink 环境下对汽车防抱死制动系统进行数学建模 , 采用基于…...
若依前后端分离版之使用Swagger
记录一下使用若依前后端分离版本中,怎么使用Swagger,以帮助初学者快速入手。 1.运行项目并查看Swagger 这里自己下载项目代码,在编译器中打开运行。这个过程跳过,我们进入系统后台界面。 在系统工具、系统接口中打开Swagger页面 点击test-controller和Schemas,可展开相…...
入侵检测snort功能概述
1. 数据包嗅探与日志记录 网络流量监控:实时捕获和分析网络数据包(支持以太网、无线等)。 日志记录:将数据包以二进制格式(pcap)或文本格式存储,供后续分析。 2. 协议分析与解码 深度协议解析…...
Notepad++安装Markdown实时预览插件
具体操作 打开notepad -> 插件 -> 插件管理 -> 可用 -> “Markdown Panel” -> 安装,安装完成后工具栏点击"Markdown Panel"按钮。 注意:由于网络等原因可能安装失败 导致工具栏没出现""Markdown Panel"按钮&am…...
Swift 实现 LeetCode 254:因子组合问题的递归解法全解析
文章目录 摘要描述示例: 题解答案(Swift 实现)题解代码分析核心思路:举个例子: 示例测试及结果时间复杂度分析空间复杂度分析现实应用场景结合总结 摘要 这篇文章我们来聊聊 LeetCode 第 254 题 ——「因子的组合」。…...
Matlab 传感器加速度数据计算位移
1、内容简介 Matlab 195-传感器加速度数据计算位移 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
Ubuntu虚拟机连不上网
桥接 虚拟机Ubuntu系统必须能连接到外网,不然不能更新软件安装包 配置虚拟机网络(关机或者挂起状态) 第一步1.重启虚拟机网络编辑器(还原配置) 第二步2.重启虚拟机网络适配器(移除再添加) 启…...
大模型论文:Language Models are Unsupervised Multitask Learners(GPT2)
大模型论文:Language Models are Unsupervised Multitask Learners(GPT2) 文章地址:https://storage.prod.researchhub.com/uploads/papers/2020/06/01/language-models.pdf 摘要 自然语言处理任务,例如问答、机器翻译、阅读理解和摘要&am…...
大模型本地部署系列(3) Ollama部署QwQ[阿里云通义千问]
大家好,我是AI研究者, 今天教大家部署 一个阿里云通义千问大模型。 QwQ大模型简介 QwQ是由阿里云通义千问(Qwen)团队推出的开源推理大模型,专注于提升AI在数学、编程和复杂逻辑推理方面的能力。其核心特点包括&#x…...
WPF ObjectDataProvider
在 WPF(Windows Presentation Foundation)中,ObjectDataProvider 是一个非常有用的类,用于将非 UI 数据对象(如业务逻辑类或服务类)与 XAML 绑定集成。它允许在 XAML 中直接调用方法、访问属性或实例化对象,而无需编写额外的代码。以下是关于 ObjectDataProvider 的详细…...
《Vue Router实战教程》12.不同的历史记录模式
欢迎观看《Vue Router 实战(第4版)》视频课程 不同的历史记录模式 在创建路由器实例时,history 配置允许我们在不同的历史模式中进行选择。 Hash 模式 hash 模式是用 createWebHashHistory() 创建的: import { createRouter,…...
Dify什么?Dify 零门槛打造专属 AI 应用
Dify 是一个专注于简化大语言模型(LLM)应用开发的开源平台,旨在帮助用户通过可视化界面和模块化工具快速构建、部署和管理 AI 驱动的应用程序。以下是其核心特点: 主要功能 可视化编排 提供直观的界面,无需深入编码即…...
【Javascript】在canvas中加载shader着色器的方法(开箱即用)
功能简介 可以播放,暂停shader代码,可以在js中配置shader参数(下面案例列举了所有可用参数形式)缺点 这个是固定机位,没有自定义顶点着色器部分的功能,有需要可直接在class中改,或者修改后调用…...
华为华三模拟器解决兼容问题Win11 24H2 现在使用ENSP的问题解决了
一、Win11 24H2 现在使用ENSP的问题解决了 这个Win11 的 24H2不能使用ENSP的问题已经困扰我们很久了,在之前的文章中,我们也有说明这个问题 之前ENSP肯定启动会报错40 当时还建议大家先不要更新到win11的24H2版本,现在终于迎来了更新&#…...
五、用例篇
Bug等级:崩溃、严重、一般、次要 bug的生命周期 面试高频考题:跟开发产生争执怎么办? (1)反思自己,是不是bug描述写的不清楚 (2)站在用户思考问题,反问开发人员:“如果你是用户,你能接受这样…...
Mysql中的数据类型和语句概述
Mysql中的数据类型 数值类 整数:int,四个字节构成 浮点型:float单精度浮点数,四个字节,double双精度浮点数,八个字节,decimal用于高精度计算,尤其是在金融领域。decimalÿ…...
Vue3连接MQTT作为客户端
先下载依赖 npx --yes --registry https://registry.npmmirror.com npm install mqtt 在src的api创建 mes.js // 导入axios import axios from axios;// 定义一个变量,记录公共的前缀, baseURL const baseURL http://localhost:8080; const instance axios.create({ base…...