二维图像处理到三维点云处理
一、Opencv和PCL
下面是opencv和pcl的特点、区别和联系的详细对比表格。
特点/区别/联系 | OpenCV | PCL |
---|---|---|
英文全称 | Open Source Computer Vision Library | Point Cloud Library |
语言 | C++、Python、Java | C++ |
功能 | 图像处理(图像处理和分析、特征提取和描述、图像识别和分类、目标检测和跟踪等)、计算机视觉 | 点云处理(点云处理和分割、三维重建、三维识别和分割等)、计算机视觉 |
支持平台 | Windows、Linux、macOS、Android、iOS | Windows、Linux |
算法库 | 包括图像处理、计算机视觉、机器学习等 | 包括点云处理、3D重建、目标检测等 |
应用领域 | 包括医学影像、机器人、无人驾驶等 | 包括机器人、无人驾驶、虚拟现实等 |
数据类型 | 2D图像 | 3D点云 |
数据格式 | JPEG、PNG、BMP等图像格式 | PCD、PLY等点云格式 |
基础数据结构 | Mat、Point、Rect等 | PointXYZ、PointCloud等 |
特征提取算法 | SIFT、SURF、ORB等 | Harris3D、FPFH、SHOT等 |
目标检测算法 | Haar、LBP、HOG等 | 3DMatch、VFH、RANSAC等 |
深度学习库 | OpenCV DNN | PCL ML |
开发难度 | 较低 | 较高 |
OpenCV和PCL虽然有一些相似之处,但它们的应用场景和功能是有所不同的。OpenCV主要用于图像处理和计算机视觉领域,而PCL则主要用于点云处理和三维重建领域。
2.1 特征提取算法简要介绍
1、SIFT (Scale-Invariant Feature Transform):SIFT算法的基本原理是使用高斯差分图像计算尺度空间中的特征点,并通过一系列的方向和尺度不变性来描述这些特征点。SIFT算法的步骤包括:
- 构建高斯金字塔和DoG金字塔:通过构建不同尺度的高斯金字塔和DoG金字塔,检测不同尺度下的特征点。
- 检测局部极值点:在DoG金字塔中找到局部极值点,作为关键点的候选。
- 精确定位关键点位置和尺度:通过对关键点周围区域进行拟合,确定关键点的精确位置和尺度。
- 计算关键点方向:计算关键点周围区域的梯度方向,确定关键点的方向。
- 生成描述符:使用关键点周围区域的像素值和梯度方向,生成具有旋转不变性和尺度不变性的特征描述符。
- 作用:SIFT算法主要用于点云匹配和识别任务,可以提取出点云的局部特征,对不同形状的点云进行匹配和分类。
2、SURF (Speeded Up Robust Features):SURF算法的基本思想是通过构建Hessian矩阵来检测图像中的关键点,并在其周围计算Haar小波响应来描述这些关键点。SURF算法的步骤包括:
- 构建尺度空间:通过高斯差分金字塔构建尺度空间,检测不同尺度下的关键点。
- 计算Hessian矩阵:在尺度空间中计算每个像素的Hessian矩阵,用于检测关键点。
- 检测极值点:在不同尺度和不同方向上,找到具有极值的像素点,作为关键点的候选。
- 确定关键点的方向:通过计算关键点周围的梯度方向直方图,确定关键点的方向。
- 计算描述符:使用关键点周围的Haar小波响应,生成描述符。
- 作用:SURF算法主要用于点云匹配和识别任务,可以提取出点云的局部特征,对不同形状的点云进行匹配和分类。
3、ORB (Oriented FAST and Rotated BRIEF):ORB算法的基本思想是通过使用FAST算法检测图像中的关键点,并使用BRIEF算法生成二进制描述符来描述这些关键点。ORB算法的步骤包括:
- 检测FAST特征点:使用FAST算法检测图像中的关键点。
- 确定关键点方向:通过计算关键点周围的梯度方向直方图,确定关键点的方向。
- 计算BRIEF描述符:使用BRIEF算法生成二进制描述符,描述关键点周围的像素值。
- 作用:ORB算法主要用于点云匹配和识别任务,可以提取出点云的局部特征,对不同形状的点云进行匹配和分类。
4、Harris3D:Harris3D算法是一种基于Harris角点检测算法的三维特征点提取算法。Harris3D算法的基本思想是通过计算点云中每个点的局部自相关矩阵来检测特征点,并通过计算特征值来确定其是否是角点。Harris3D算法的步骤包括:
- 计算协方差矩阵:计算点云中每个点的协方差矩阵。
- 特征值分解:对协方差矩阵进行特征值分解,求出每个点的特征值和特征向量。
- 特征点提取:根据特征值的大小,提取出关键点。
- 描述符计算:计算每个关键点的局部特征描述符,用于点云匹配。
- 作用:Harris3D算法主要用于点云匹配和识别任务,可以提取出点云的局部几何特征,对不同形状的点云进行匹配和分类。
5、FPFH(快速点特征直方图):
- 基本原理:FPFH算法通过计算每个点与其邻域点的法向量和距离信息,构建点特征直方图,提取出点云的局部特征。
- 步骤:
- 邻域点选择:选择每个点的邻域点。
- 法向量估计:估计每个点的法向量。
- 特征点计算:计算每个点与其邻域点的法向量和距离信息,构建点特征直方图。
- 描述符计算:计算每个点的局部特征描述符,用于点云匹配。
- 作用:FPFH算法主要用于点云配准任务,可以提取出点云的局部几何特征,对不同形状的点云进行配准和匹配。
6、SHOT(旋转不变的特征描述符):
- 基本原理:SHOT算法通过计算每个点与其邻域点的法向量和方向信息,构建旋转不变的特征描述符,提取出点云的局部特征。
- 步骤:
- 邻域点选择:选择每个点的邻域点。
- 法向量估计:估计每个点的法向量。
- 方向分配:为每个点分配方向,用于实现旋转不变性。
- 特征点计算:计算每个点与其邻域点的法向量和方向信息,构建特征描述符。
- 描述符归一化:归一化特征描述符,使其具有旋转不变性。
- 作用:SHOT算法主要用于点云匹配和识别任务,可以提取出点云的局部几何特征,对不同形状的点云进行匹配和分类。
二、点云和图像
2.1 点云
点云是由大量的三维点组成的数据结构,常用于三维感知任务中。它涉及的重点知识和技术包括:
- 点云获取:点云获取是将现实世界中的物体转化为点云数据的过程。常用的点云获取设备包括激光雷达、RGB-D相机、立体视觉等。
- 点云预处理:点云预处理是对点云数据进行预处理的过程,包括去噪、滤波、配准等操作。常用的预处理算法包括高斯滤波、平滑滤波、ICP配准等。
- 特征提取和描述:特征提取和描述是点云处理中非常重要的一步,它可以提取出点云中的关键特征,用于后续的分类、识别、跟踪等任务。常用的特征包括法向量、曲率、描述符等。
- 点云分割:点云分割是将点云分成不同的部分或对象的过程,常用的分割算法包括基于区域的分割、基于几何形状的分割、基于深度学习的分割等。
- 三维重建:三维重建是将点云数据转化为三维模型的过程,常用的重建算法包括基于体素的重建、基于三角化的重建、基于深度学习的重建等。
2.2 图像
图像是由像素组成的二维数据结构,常用于二维感知任务中。它涉及的重点知识和技术包括:
- 图像获取:图像获取是将现实世界中的物体转化为图像数据的过程。常用的图像获取设备包括相机、摄像头等。
- 图像预处理:图像预处理是对图像数据进行预处理的过程,包括去噪、滤波、增强等操作。常用的预处理算法包括高斯滤波、平滑滤波、直方图均衡化等。
- 特征提取和描述:特征提取和描述是图像处理中非常重要的一步,它可以提取出图像中的关键特征,用于后续的分类、识别、跟踪等任务。常用的特征包括颜色直方图、梯度方向直方图、SIFT、SURF等。
- 图像分割:图像分割是将图像分成不同的部分或对象的过程,常用的分割算法包括基于区域的分割、基于边缘的分割、基于深度学习的分割等。
- 目标检测和跟踪:目标检测和跟踪是图像处理中的重要任务,它可以检测和跟踪图像中的目标物体。常用的方法包括基于特征的检测和跟踪、基于深度学习的检测和跟踪等。
三、图像处理相关知识
-
数字图像基础:数字图像的基本概念和表示方法,如像素、分辨率、灰度值等。
-
图像增强:图像增强的方法,包括直方图均衡化、灰度拉伸、锐化、平滑等。
-
图像滤波:图像滤波的方法,包括线性滤波(如均值滤波、高斯滤波、中值滤波等)和非线性滤波(如边缘保留滤波等)。
-
特征提取:特征提取的方法,如边缘检测、角点检测、纹理特征提取等。
-
图像分割:图像分割的方法,包括基于阈值的分割、基于边缘的分割、基于区域的分割、基于水平集的分割等。
-
目标检测和跟踪:目标检测和跟踪的方法,如基于特征的检测和跟踪、基于深度学习的检测和跟踪等。
-
计算机视觉:计算机视觉的基本概念和应用,如人脸识别、物体识别、图像分类等。
-
深度学习算法:深度学习算法的基本概念和应用,如卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)等。
-
图像处理和计算机视觉工具和框架:常用的图像处理和计算机视觉工具和框架,如OpenCV、TensorFlow和PyTorch等。
-
数学基础:图像处理和计算机视觉需要一定的数学基础,如线性代数、微积分和概率论等。
-
编程语言和工具:实现和测试图像处理算法需要一些编程语言和工具,如Python、C++、Matlab等。
-
应用领域:安防、智能交通、医疗、工业等。
四、PCL相关知识
处理点云数据是一个关键技能。点云数据通常来源于激光雷达(LiDAR)和深度摄像头等传感器。为了有效地处理和分析点云数据,需要掌握以下重点知识:
-
基本概念:点云的基本概念,如三维坐标、法向量、点云数据结构(如XYZ格式、PLY格式)等。
-
点云预处理:点云的去噪、滤波、下采样等预处理方法,如统计滤波器、基于半径的离群值去除、体素栅格滤波等。
-
点云配准:点云配准的基本原理和方法,例如迭代最近点(ICP)算法、基于特征的全局配准(如RANSAC)等。
-
特征提取:点云的局部特征和全局特征提取方法,如法向量估计、曲率计算、FPFH(Fast Point Feature Histograms)、SHOT(Signature of Histograms of OrienTations)等。
-
分割与聚类:点云分割和聚类技术,如基于区域生长的分割算法、欧氏聚类、DBSCAN等。
-
三维重建:利用点云数据进行三维重建的方法,如基于Delaunay三角剖分的表面重建、基于泊松重建等。
-
深度学习方法:针对点云的深度学习方法,如 PointNet/PointNet++、DGCNN(Dynamic Graph CNN)、PointCNN等,用于点云分类、语义分割等任务。
-
点云可视化与处理工具:点云处理和可视化的工具和库,例如PCL(Point Cloud Library)、Open3D、PDAL等。
-
应用领域:点云在计算机视觉、自动驾驶、机器人技术等领域的应用,如物体识别、场景理解、SLAM(Simultaneous Localization and Mapping)等。
五、计算机视觉相关知识
计算机视觉是研究如何让计算机看懂图像和视频的领域,它涉及以下重点知识:
-
图像处理和分析:对图像进行预处理、滤波、图像增强、边缘检测、特征提取和描述等处理和分析操作。
-
特征提取和描述:局部和全局特征提取和描述的方法,如SIFT、SURF、HOG、LBP、CNN等。
-
图像识别和分类:基于机器学习和深度学习的图像识别和分类算法,如SVM、KNN、神经网络、卷积神经网络等。
-
目标检测和跟踪:基于机器学习和深度学习的目标检测和跟踪算法,如RCNN、Fast R-CNN、YOLO、SORT等。
-
图像分割和理解:图像分割和理解的方法,如基于聚类、分割、图割等的算法,以及基于语义理解的算法。
-
三维视觉:三维视觉的基本概念和算法,如三维重建、立体视觉、三维识别和分割等。
-
深度学习:深度学习的基本概念和算法,如卷积神经网络、循环神经网络、生成对抗网络等,以及深度学习在计算机视觉中的应用。
-
计算机视觉应用:安防监控、自动驾驶、医疗影像、虚拟现实等。
六、激光雷达处理算法
1、点云滤波算法:点云滤波算法常用于去除激光雷达采集数据中的离群点、噪声点和重复点。常见的点云滤波算法包括:体素滤波(Voxel Filter)、半径滤波(Radius Outlier Removal Filter)、统计滤波(Statistical Outlier Removal Filter)等。
- 体素滤波:将点云划分为等大小的体素,对每个体素内的点云进行统计,然后通过阈值筛选掉噪声点。体素大小决定了滤波的精度,体素越小,滤波精度越高,但计算量也越大。
- 半径滤波:对于每个点,计算其周围一定半径内的点云的平均距离,如果该点到周围点云的平均距离大于阈值,则认为该点为离群点。半径大小决定了滤波的范围,半径越大,滤波范围越广,但可能会将一些有用的点也滤掉。
- 统计滤波:对于每个点,计算其周围一定数量的点的平均距离和标准差,如果该点到周围点云的平均距离大于一定倍数的标准差,则认为该点为离群点。统计滤波通常能够去除更复杂的噪声和离群点。
2、点云分割算法:点云分割算法常用于将激光雷达采集数据中的点云分割成不同的地面和非地面点。常见的点云分割算法包括:逐层分割(ProgressiveMorphologicalFilter)、基于高度阈值的分割(Height Threshold Filter)、基于形态学的分割(Morphological Filter)等。
- 逐层分割:将原始点云按照高度分成几层,然后对每层点云进行形态学操作,通过连通性分割出地面和非地面点。逐层分割方法简单直接,但需要事先确定适当的高度分割值,如果环境变化较大,可能需要重新调整高度分割值。
- 基于高度阈值的分割:设定一个高度阈值,将高度低于该阈值的点标记为地面点,高于该阈值的点标记为非地面点。高度阈值的设定需要考虑地面的高度分布情况,如果地面高度变化较大,可能需要将其进行分段处理。
- 基于形态学的分割:对于每个点,计算其周围一定半径内的点云的高度差和法向量夹角,根据差异性对点进行分类,从而实现地面和非地面点的分割。基于形态学的分割方法可以适应更加复杂的地面形状。
3、点云配准算法:点云配准算法常用于将多个激光雷达采集数据中的点云进行配准以获得更加完整和准确的地图。常见的点云配准算法包括:ICP(Iterative Closest Point)、NDT(Normal Distributions Transform)等。
- ICP:通过寻找两个点云之间的最小平方误差来进行点云配准。具体来说,ICP算法首先通过一些方法(如SVD、RANSAC等)估计两个点云之间的初始变换矩阵,然后通过迭代的方式,不断优化初始配准的坐标变换矩阵,直至误差最小。ICP算法的优点是速度快、精度高,但需要比较好的初始变换矩阵。
- NDT:通过将点云表示为高斯分布的形式,计算两个高斯分布之间的转换矩阵,从而实现点云的配准。NDT算法首先将点云离散化为一系列高斯分布,然后计算两个高斯分布之间的转换矩阵,使用梯度优化方法不断优化转换矩阵,直至误差最小。NDT算法的优点是精度高、对初始变换矩阵的要求较低,但计算量较大。
4、特征提取算法:特征提取算法常用于从激光雷达采集数据中提取物体的特征信息,如点云中的平面、边缘、角点等。常见的特征提取算法包括:Harris角点检测、SIFT特征提取、SURF特征提取等。
- SIFT:通过对点云中的局部区域进行高斯平滑和梯度计算,提取出关键点和其对应的描述子,用于点云匹配和识别。SIFT算法对旋转、缩放、平移等变换具有较好的不变性,但计算量较大。
- ISS:通过计算点云中每个点的曲率和法向量变化,提取出与点云形状相关的稳定性特征,用于点云配准和分割。ISS算法计算量较小,对点云密度变化较为鲁棒,但对于过于平坦或过于曲率的区域可能无法提取有效特征。
- FPFH:通过计算每个点的法向量和其周围一定半径内点的相对位置,生成点对之间的特征描述子,用于点云配准和分割。FPFH算法对点云密度变化较为鲁棒,但可能存在特征冗余和重复的问题。
5、地图构建算法:地图构建算法常用于将激光雷达采集数据中的点云转化为地图以供后续的SLAM(Simultaneous Localization and Mapping)算法使用。常见的地图构建算法包括:栅格地图(Grid Map)、半光滑地图(Smoothed Distance Map)、体素地图(Voxel Grid Map)等。
- Poisson重建:将点云表示为无序点集和法向量的形式,通过求解Poisson方程,生成连续、光滑的曲面模型。Poisson重建算法对点云噪声和采样密度变化较为鲁棒,但对点云形状变化较为敏感。
- Marching cubes:将点云表示为体素网格的形式,通过分析每个体素内部点云的分布情况,生成连续的曲面模型。Marching cubes算法对点云采样密度变化较为鲁棒,但对点云噪声和形状变化较为敏感。
6、目标检测算法:目标检测算法常用于从激光雷达采集数据中检测出物体并进行分类,如行人、车辆、建筑等。常见的目标检测算法包括:基于深度学习的目标检测算法(如PointRCNN、SECOND、PV-RCNN等)、传统的机器学习算法(如SVM、RF等)等。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
二维图像处理到三维点云处理
一、Opencv和PCL 下面是opencv和pcl的特点、区别和联系的详细对比表格。 特点/区别/联系OpenCVPCL英文全称Open Source Computer Vision LibraryPoint Cloud Library语言C、Python、JavaC功能图像处理(图像处理和分析、特征提取和描述、图像识别和分类、目标检测和跟踪等)、计…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode 删除有序数组中的重复项
题目 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一…...
![](https://img-blog.csdnimg.cn/img_convert/f43845c4e4eb489cb4e062cb5f7fff36.png)
JVM学习.03 类加载机制
1、前言从事Java开发工作的都知道,Java程序提交到JVM运行时,需要编译成Class文件,才能被JVM加载运行。那么这些Class文件进入到虚拟机后会发生什么?以及Class是如何被加载的?这些都是本文要讲解的部分。2、类加载时机所…...
![](https://img-blog.csdnimg.cn/b57aa5589300468aad9cf76fff05346b.png)
Celery使用:优秀的python异步任务框架
目录Celery 简介介绍安装基本使用Flask使用Celery异步任务定时任务Celery使用Flask上下文进阶使用参考停止Worker后台运行Celery 简介 介绍 Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。 它是一个…...
![](https://img-blog.csdnimg.cn/02e1244274964107b2ce3c400a3d530e.png)
第十四届蓝桥杯三月真题刷题训练——第 19 天
第 1 题:灌溉_BFS板子题 题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。 每经过一分…...
![](https://img-blog.csdnimg.cn/img_convert/35edba3b72a0ab22f56bc7f5b0722a85.jpeg)
类和对象 - 下
本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 初始化列表 成员变量的定义与初始化 初始化列表的使用 变量定义顺序 explicit关键字 隐式类型转换 自定义类型隐式转换 explicit 限制转换 关于static static声明类成员 友元 友…...
![](https://img-blog.csdnimg.cn/513cdcb73d914414aaa71065e8ba9a69.gif#pic_center)
【云原生】Linux基础IO(文件理解与操作)
✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Great minds discuss ideas. Average minds discuss events. Small minds disc…...
![](https://www.ngui.cc/images/no-images.jpg)
CentOS 7 安装 mysql 8.0 客户端
只想安装 mysql-client 8.0 , 结果发现直接 yum install mysql mysql-client 安装的版本是 mysql Ver 15.1 Distrib 5.5.68-MariaDB ,这个版本太低,连接其他服务器上的 mysql 8.0 时总是失败,因为 mysql 8.0 加密方式改变了&#…...
![](https://img-blog.csdnimg.cn/img_convert/3b5a0c4bdca64fe4920164cdfe346ac6.png)
Ubuntu下载、配置、安装和编译opencv
1 安装相关依赖安装opencv前,需要先准备好编译器、相关依赖sudo apt-get install gcc g cmake vim sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev sudo apt-get install libgtk2.0-…...
![](https://img-blog.csdnimg.cn/c08bf7a248e346a58b2dc8fe540f9c57.png)
第七讲 贪心
文章目录股票买卖 II货仓选址(贪心:排序中位数)糖果传递(❗贪心:中位数)雷达设备(贪心排序)付账问题(平均值排序❓)乘积最大(排序/双指针)后缀表达…...
![](https://www.ngui.cc/images/no-images.jpg)
数字藏品的未来及发展趋势
随着互联网的普及以及数字文化的日益发展,数字藏品作为一种全新的收藏方式正在逐步兴起。数字藏品可以是数字版权、数字艺术品、数字音乐以及数字视频等形式,这些藏品通过数字化技术保存下来,并在互联网上进行传播和交易。数字藏品的发展趋势…...
![](https://img-blog.csdnimg.cn/17b35b5ed6e64720b913e1f588be6f78.jpeg)
值得记忆的STL常用算法,分分钟摆脱容器调用的困境,以vector为例,其余容器写法类似
STL常用算法 概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等 <nuneric>体积很小,只包括…...
java如何手动导jar包
今天用IDEA,需要导入一个Jar包,因为以前都是用eclipse的,所以对这个idea还不怎么上手,连打个Jar包都是谷歌了一下。 但是发现网上谷歌到的做法一般都是去File –> Project Structure中去设置,有没有如同eclipse一样…...
![](https://www.ngui.cc/images/no-images.jpg)
怎么防止SQL注入?
首先SQL注入是一种常见的安全漏洞,黑客可以通过注入恶意代码来攻击数据库和应用程序。以下是一些防止SQL注入的基本措施: 数据库操作层面 使用参数化查询:参数化查询可以防止SQL注入,因为参数化查询会对用户输入的数据进行过滤和…...
![](https://img-blog.csdnimg.cn/d56ca138eacd4b729e9d341d1ad9937c.jpeg)
【千题案例】TypeScript获取两点之间的距离 | 中点 | 补点 | 向量 | 角度
我们在编写一些瞄准、绘制、擦除等功能函数时,经常会遇到计算两点之间的一些参数,那本篇文章就来讲一下两点之间的一系列参数计算。 目录 1️⃣ 两点之间的距离 ①实现原理 ②代码实现及结果 2️⃣两点之间的中点 ①实现原理 ②代码实现及结果 3…...
![](https://img-blog.csdnimg.cn/ea6c74bbf4a04dc78883e0264f7582fd.png)
堆叠注入--攻防世界CTF赛题学习
在一次联系CTF赛题中才了解到堆叠注入,在这里简单介绍一下。 堆叠注入的原理什么的一搜一大堆,我就不引用百度了,直接进入正题。 这个是攻防世界的一道CTF赛题。 采用寻常思路来寻找sql注入漏洞。 payload:1 and 11-- 利用payload: and 12…...
![](https://img-blog.csdnimg.cn/img_convert/d09b30dda49838b5e09488a48d320c60.png)
STM32 ADC+定时器+DMA+FFT
本次实现的功能为单片机DAC输出一个正弦波,然后ADC定时采样用DMA输出,最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1,采用DMA输出,定时器3触发定时器时钟64M,分频后为102.4KHzADC采…...
![](https://www.ngui.cc/images/no-images.jpg)
用Node.js实现一个HTTP服务器程序(文件服务器)
http Node.js开发的目的就是为了用JavaScript编写Web服务器程序。因为JavaScript实际上已经统治了浏览器端的脚本,其优势就是有世界上数量最多的前端开发人员。如果已经掌握了JavaScript前端开发,再学习一下如何将JavaScript应用在后端开发,就是名副其实的全栈了。 HTTP协…...
![](https://img-blog.csdnimg.cn/227820fabcfc48f98a3f9192febec938.gif)
Python实现人脸识别检测, 对美女主播照片进行评分排名
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 素材、视频、代码、插件安装教程我都准备好了,直接在文末名片自取就可点击此处跳转 开发环境: Python 3.8 Pycharm 2021.2 模块使用: requests >>> pip install requests tqdm >…...
![](https://img-blog.csdnimg.cn/5261bf2a11124b798cf2e02aeb0bb25e.png)
【数据结构与算法】什么是双向链表?并用代码手动实现一个双向链表
文章目录一、什么是双向链表二、双向链表的简单实现一、什么是双向链表 我们来看一下这个例子: 在一个教室里,所有的课桌排成一列,如图 相信在你们的读书生涯中,老师肯定有要求你们记住自己的前后桌是谁。所以该例子中&#x…...
![](https://img-blog.csdnimg.cn/3a8e83662fea495baa36475c12c3922c.png)
23种设计模式
参考链接: 【狂神说Java】通俗易懂的23种设计模式教学(停更)_哔哩哔哩_bilibili 23种设计模式【狂神说】_狂神说设计模式_miss_you1213的博客-CSDN博客 1. 单例模式 参考链接: 【狂神说Java】单例模式-23种设计模式系列_哔哩哔哩…...
![](https://www.ngui.cc/images/no-images.jpg)
20美刀一个月的ChatGPT架构师,性价比逆天了
文章目录20美刀一个月的ChatGPT架构师,性价比逆天了1.角色设定2.基本描述3.解决方案4.物理网络蓝图5.系统集成接口5.1 系统集成接口设计5.1.1 前端服务器与后端服务器接口:5.1.2 后端服务器与去背景处理服务接口:5.2 系统集成接口展示6.部署环…...
![](https://www.ngui.cc/images/no-images.jpg)
海门区教育科学规划课题2020年度成果鉴定书
海门区教育科学规划课题2020年度成果鉴定书 课题编号:HMGZ2020007 课题名称 中学历史核心素养校本化实施的培育研究 主持人 徐彬 工作单位 南通市海门证大中学 核心组成员 (包括主持人) 姓名 研究任务完成情况 (获得的主要成果、…...
![](https://www.ngui.cc/images/no-images.jpg)
大数据专业应该怎么学习
大数据学习不能停留在理论的层面上,大数据方向切入应是全方位的,基础语言的学习只是很小的一个方面,编程落实到最后到编程思想。学习前一定要对大数据有一个整体的认识。 大数据是数据量多吗?其实并不是,通过Hadoop其…...
![](https://img-blog.csdnimg.cn/img_convert/2bb8cbc9344106d137781f8b514ef478.jpeg)
学习黑客十余年,如何成为一名高级的安全工程师?
1. 前言 说实话,一直到现在,我都认为绝大多数看我这篇文章的读者最后终究会放弃,原因很简单,自学终究是一种适合于极少数人的学习方法,而且非常非常慢,在这个过程中的变数过大,稍有不慎&#…...
![](https://img-blog.csdnimg.cn/a7d74ccc26644779aefa1e9785b71b86.png)
【算法】手把手学会二分查找
目录 简介 基本步骤 第一种二分 第二种二分 例题 搜索插入位置 数的范围 总结 简介 🥥二分查找,又叫折半查找,通过找到数据二段性每次都能将原来的数据筛选掉一半,通过这个算法我们能够将一个一个查找的 O(n) 的时间复杂…...
![](https://www.ngui.cc/images/no-images.jpg)
SVO、vinsmono、 OKVIS系统比较
几个经典视觉slam系统的比较 SVO 高翔链接:https://www.zhihu.com/question/39904950/answer/138644975处理的各个线程: tracking部分-frame to frame 、frame to map 金字塔的处理。这一步估计是从金字塔的顶层开始,把上一层的结果作为下一层估计的初…...
![](https://www.ngui.cc/images/no-images.jpg)
前端开发规范
一、开发工具 开发工具统一使用 VSCode代码格式化插件使用 Prettier代码格式校验使用 ESLintVSCode 需安装的插件有:ESLint、Prettier、Vetur 二、命名规范 项目命名使用小写字母,以连字符分隔 正确:fe-project 错误:FE PROJECT…...
![](https://img-blog.csdnimg.cn/img_convert/7795cb1f35442887b891cf7b3665a2de.png)
不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程
大家好,我是可乐。 过去的一周,真是疯狂的一周。 GPT-4 震撼发布,拥有了多模态能力,不仅能和GPT3一样进行文字对话,还能读懂图片; 然后斯坦福大学发布 Alpaca 7 B,性能匹敌 GPT-3.5ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
【艾特淘】抖音小店物流体验分提升的6个维度,新手做店必看
抖音小店体验分,考核的内容包括商品、物流以及服务。大部分人会把重心放在商品评价和服务上,忽略了物流体验。但其实,抖音小店物流体验占比有20%,比服务分的占比还高一点。如果你的订单物流出了问题,很有可能会导致用户…...
![](https://img-blog.csdnimg.cn/img_convert/dcd2bfbfb6de2013dddff15782a67d28.png)
wordpress更新不成功/游戏推广合作
如何理解CSS中BFC?定义: 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。BFC 特性及应用同一个 BFC 下外边距会发生折叠代码理解//两个 …...
![](/images/no-images.jpg)
3dmax做动画的网站有哪些/爱站长工具
天线长度一般 = 波长1/4效果最好 114dB 300M, 114dB 感度 功率 每减小6DB,传输距离减小一倍 转载于:https://www.cnblogs.com/ldcb/p/8032944.html...
![](/images/no-images.jpg)
人大代表网站建设/google下载安装
正则化技术 一种防止过拟合,提高泛化能力的技巧,因此算法正则化的研究成为机器学习中主要的研究主题。此外,正则化还是训练参数数量大于训练数据集的深度学习模型的关键步骤。 正则化可以避免算法过拟合,过拟合通常发生在算法…...
![](/images/no-images.jpg)
手机网站建设万网/电商网站入口
java 生成4位随机数 验证码刘振兴代码分享2015年11月16日8166暂无评论public static String yzm(){String str "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";String str2[] str.split(",");//将字符串以,分割Random rand…...
![](/images/no-images.jpg)
新公司网站建设流程/电子商务推广方式
依赖包安装 # 安装 myjs-common 包 npm install myjs-common1.0.0格式器表达式 YEAR_FORMAT: 年格式化-yyyyMONTH_FORMAT: 月格式化-yyyy-MMDATE_FORMAT: 日期格式化-yyyy-MM-ddHOUR_FORMAT: 时格式化-yyyy-MM-dd HHMINUTE_FORM…...
![](/images/no-images.jpg)
金银回收东莞网站建设/游戏搜索风云榜
1.页面向Controller传数组,Controller这边该怎么写 页面中有个多选,name为id,在Controller中RequestParam(value "Id")long[] id; 2.content实体中将置顶设置为boolean了,而存进数据库的时候是0,1。这该怎么办。 实体和数据库的对…...