python深度学习
文章平均质量分 91
python初始环境搭建为例子
落叶霜霜
这个作者很懒,什么都没留下…
展开
-
【小白笔记:JetsonNano学习(二)JetsonNano 安装开机问题屏幕进不去】
原因分析:烧录的tf卡为sd卡时候的格式化的格式不对,新建格式出错,导致烧录失败,文件无法完整读取。将经过烧录之后的sd卡插入jetson nano之后出现以下的几个界面,表示烧录失败。64gb以上默认格式化为exfat,不要选择ntfs,重新烧录即可。解决办法:重新烧录,重新格式化选择格式。jetson nano官方镜像。32gb默认fat32格式。原创 2024-03-18 21:29:33 · 477 阅读 · 0 评论 -
【小白笔记:JetsonNano学习(一)SDKManager系统烧录】
该SDK还包括本机安装流行的功能开源机器学习(ML)框架,如TensorFlow,PyTorch,Caffe,Keras和MXNet,以及计算机视觉和机器人开发的框架,如OpenCV和ROS。通过VMware虚拟机,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。此时需要根据系统提示给设置系统的基本功能,必须执行的包括设置用户名与密码等,设置用户名和密码这里一定要牢记,否则会出现登录不进系统的问题。原创 2024-03-18 21:18:29 · 1381 阅读 · 0 评论 -
【./a.out: error while loading shared libraries: libopencv_highgui.so.405: cannot open shared object】
这个错误表明系统无法找到名为 “libopencv_highgui.so.405” 的共享库文件。确保库文件所在的路径被包含在系统的动态链接库路径中。可以使用命令 find / -name “libopencv_highgui.so.405” 来查找该文件。首先,确认系统上是否存在名为 “libopencv_highgui.so.405” 的库文件。将libopencv_highgui.so.405换成自己缺少的库的名字即可。find: ‘/root’: 权限不够。原创 2024-03-11 20:57:49 · 926 阅读 · 0 评论 -
[YoloV8目标检测与实例分割——目标检测onnx模型推理]
onnx 模型:ONNX 模型是独立于深度学习框架的,可以在支持ONNX的不同框架中加载和运行,例如ONNX Runtime、TensorFlow、Caffe2等。多框架支持:ONNX Runtime可以与使用不同的机器学习框架创建的模型一起使用,包括PyTorch、TensorFlow等,这要归功于其对ONNX格式的支持。它包含了模型的权重参数和模型结构的定义。模型转换:ONNX Runtime可以将来自支持的框架的模型转换为ONNX格式,从而更容易在各种部署场景中使用这些模型。原创 2023-12-30 20:36:17 · 1493 阅读 · 0 评论 -
【YOLOV8实例分割——详细记录环境配置、自定义数据处理到模型训练与部署】
Ultralytics YOLOv8是一种前沿的、最先进的(SOTA)模型,它在前代YOLO版本的成功基础上进行了进一步的创新,引入了全新的特性和改进,以进一步提升性能和灵活性。标注完数据之后,在工程目录下创建一个dataset目录,dataset目录下包含有images、json_labels、labels三个目录,images存放数据集的所有的图像,json_labels目录下存放labelme标注出来的所有json标签,labels为空目录。数据量考虑: 数据集的大小是选择划分比例的一个关键因素。原创 2023-12-30 20:32:41 · 1658 阅读 · 1 评论 -
[华为诺亚实验室+中科大提出TinySAM | 比SAM小10倍,精度的超车!]
最近,Kirillov 引入了一个强大的分割 anything 模型(SAM),以及一个大规模的分割数据集 SA-1B,该数据集包含了 11 亿张图像上的超过 10 亿个Mask。具有任意形状和类别的目标的强大的分割能力,SAM 已成为许多下游任务的基础框架,如物体跟踪,图像修复 和 3D 视觉。一方面,对于完整的目标,过多的采样点可能会导致目标的某些不同部分被错误地分割为独立的Mask。然而,SAM 包含重的架构,需要大量的计算能力,这阻碍了 SAM 在计算受限的边缘设备上的进一步应用。原创 2023-12-28 20:37:25 · 972 阅读 · 0 评论 -
[DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
提出的架构,双注意力U-Net与特征融合(DAU-FI Net),解决了语义分割中的挑战,特别是在多类不平衡数据集上,这些数据集具有有限的样本。DAU-FI Net 整合了多尺度空间-通道注意力机制和特征注入,以提高目标定位的准确性。核心采用了一个多尺度深度可分离卷积块,捕获跨尺度的局部模式。这个块由一个空间-通道挤压与激励(scSE)注意力单元补充,该单元模拟特征图中通道和空间区域之间的依赖关系。此外,附加注意力门通过连接编码器-解码器路径来优化分割。为了增强模型,使用Gabor滤波器进行纹理分析,使用S原创 2023-12-28 20:30:25 · 2207 阅读 · 1 评论 -
【BEV感知算法概述——下一代自动驾驶感知算法】
2.1 kitti-360数据集kitti-360是一个包含丰富感官信息和完整注释的大规模数据集。我们记录了德国卡尔斯鲁厄的几个郊区,在73.7公里的驾驶距离内,对应超过32万张图像和10万个激光扫描。我们用粗糙的边界基元对静态和动态的三维场景元素进行注释,并将这些信息转移到图像领域,从而为三维点云和二维图像提供了密集的语义和实例注释。为了收集数据,旅行车两边各配备了一个180°的鱼眼相机,前面一个90°的透视立体相机(基线60厘米)。原创 2023-12-24 19:24:21 · 2245 阅读 · 0 评论 -
【从3D点云生成平面图:一种空间划分方法】
本文所描述的算法旨在将现实世界室内场景的点云和相关的像素级房间实例标签映射作为输入,这种映射通常由最先进的实例语义分割技术得到。为了更好地描述室内场景的几何形状,本文算法首先对输入的点云进行配准,使其向上方向与世界坐标中的z轴对齐,并使用标准方法将点云转换成密集的三角形网格。这种转换对描述室内场景点云数据的丢失和遮挡更具鲁棒性。该算法分为三个步骤:形状检测、平面投影和马尔可夫随机场问题求解。首先,通过传统的形状检测方法检测一组局部几何基元,例如垂直平面。对提取的平面进行过滤和正则化,得到更规则的平面构型。原创 2023-12-24 19:19:13 · 1058 阅读 · 0 评论 -
【基于激光雷达的路沿检测用于自动驾驶的真值标注】
我们的方法包括三个主要阶段,如图1所示。首先处理点云以获得序列不同扫描的BEV(俯视图)点云表示。其次使用深度神经网络(DNN)推断每个扫描的路沿。第三步应用序列级处理步骤来获得3D路沿估计。这个最后的处理包括:1)获取与每个扫描的2D路沿检测相对应的3D点;2)从序列的扫描、2D路沿检测和车辆航迹的信息中重建检测到的3D路沿点;3)对3D路沿进行聚类、骨架化和简化,以生成符合标准化标注文件的最终折线。3.1 点云到BEV。原创 2023-12-22 19:46:26 · 1224 阅读 · 0 评论 -
[CVPR2023 | GrowSP:无监督3D点云语义分割]
然而,预训练的点特征实际上是缺乏语义的,不能作为类别进行分组。然而,本文发现这是过于激进的,因为许多属于不同类别的超点是相似的,然后在早期训练阶段错误地分配到相同的语义组,并且随着时间的推移很难纠正。对于无监督2D语义方法,在彩色图像上取得了较好的结果,但很难扩展到3D点云,主要原因是缺乏代表性的3D数据集和通用的预训练主干网络来提取点云的高质量特征。无监督分割方法不需要大量标记好的数据,对未知场景的适应性更强,具有更广泛的适应性,相信在将来会出现更多先进的无监督方法,进而缓解手工标注的繁琐。原创 2023-12-22 19:35:57 · 1590 阅读 · 0 评论 -
[CVPR 2023:3D Gaussian Splatting:实时的神经场渲染]
mesh 和点是最常见的3D场景表示,因为它们是显式的,非常适合于快速的基于GPU/CUDA的栅格化。相比之下,最近的神经辐射场(NeRF)方法建立在连续场景表示的基础上,通常使用体射线行进来优化多层感知器(MLP),以实现捕获场景的新视图合成。类似地,迄今为止最有效的辐射场解决方案建立在连续表示的基础上,通过插值存储的值,例如,体素或哈希[网格或点。虽然这些方法的连续性有助于优化,但渲染所需的随机抽样是昂贵的,并可能导致噪声。原创 2023-12-21 20:10:15 · 2254 阅读 · 0 评论 -
[图像和LiDAR点云的可微分配准]
该方法的框架主要包括以下几个步骤:VoxelPoint-to-Pixel匹配框架:该框架用于学习结构化的跨模态潜在空间。它由三个分支组成:体素分支、像素分支和点分支。体素分支和像素分支使用卷积神经网络在表示为网格的体素和像素上执行操作,以学习它们之间的对应关系。点分支用于补充体素化过程中丢失的信息。新颖的损失函数:为了学习独特的跨模态模式,该方法引入了一种自适应加权优化的损失函数。该损失函数能够根据样本之间的差异性动态调整权重,从而更好地捕捉跨模态特征之间的相关性。原创 2023-12-21 19:36:59 · 924 阅读 · 0 评论 -
【坐标系在动态SLAM中究竟有多重要】
然而,本文的分析表明,以世界为中心的表示方法可以产生更精确的目标运动估计,在相机位姿估计方面也表现更好,并且在优化过程中展现更好的稳定性。为此,我们引入了一个基于因子图的优化框架,用于开发和测试不同的动态SLAM表示。其中,图(a)展示了原始以目标为中心的结构,图(b)是其变体,修改了图结构以包含目标运动学因子,而图©保留了该因子,并且移除了以目标为中心的运动因子。由于动态物体的存在,机器人在不同时间点获取的传感器数据可能处于不同的坐标系下,因此需要建立准确的坐标变换模型,以保证定位和建图的准确性。原创 2023-12-20 19:47:31 · 980 阅读 · 0 评论 -
[CVPR 2023:AeDet实现方位不变的多视图3D目标检测]
如下图所示,假设不同方位的摄像机在不同时刻捕获到相同的场景,现有方法(以BEVDepth为例)在不同方位下对相同的公交车产生不同的BEV特征和预测结果,而AeDet则在不同方位下对相同的公交车产生几乎相同的BEV特征和预测结果。我们假设不同方位的摄像机在不同时刻捕获到相同的场景,并将相同的图像作为6个视图的输入(为了简明起见,本文仅展示了3个视图)。1)如下方左图所示,传统的卷积编码器在特征的每个位置使用相同的采样网格,因此对于旋转等变的BEV特征,它在不同的方位下会采样和生成不同的BEV特征。原创 2023-12-20 19:29:51 · 1302 阅读 · 0 评论 -
[Python程序打包: 使用PyInstaller制作单文件exe以及打包GUI程序详解]
将Python程序打包成EXE的好处之一是,它使得你的应用程序更容易在没有Python解释器的系统上运行,同时还提供了更好的用户体验。PyInstaller 通常会自动处理脚本的依赖关系,但可以使用 --add-data 和 --add-binary 选项手动添加依赖项。我们可以清楚的看到 test.py 的同级目录下多出来两个文件夹和一个文件:📁build,📁dist 和 📄test.spec。📙注意:如果是和-F参数一起使用,应该是-Fw,而不是-F -w。原创 2023-11-24 19:39:55 · 2551 阅读 · 2 评论 -
【OpenCV实现图像:可视化目标检测框】
通过使用Python和相关的图像处理库,可以轻松实现目标检测框的可视化。通过结合目标检测算法的输出和Matplotlib的功能,可以创建一个直观且易于理解的图像,展示图像中目标的位置和边界框。通过cv2.rectangle 函数设置 thickness参数 ,可以得到填充后的图像,进而利用opencv中的 cv2.add_weight 函数可以实现透明效果,自行尝试。左上为常用的不带标签的输出框,右上为YOLO系列美化带标签后的矩形框,左下为四个角点美化后的矩形框,右下为带标签的角点美化矩形框.原创 2023-11-23 20:44:53 · 3173 阅读 · 0 评论 -
【OpenCV实现图像:制作酷炫的动画效果】
在以上代码中,首先定义了一个名为 update_points 的函数,该函数用于更新绘制图像中的数据点。函数的输入参数 num 代表当前动画的第几帧,函数的返回值即为我们需要更新的对象。随后,创建图形和轴,初始化点的位置,以及编写初始化函数和更新函数。初始化函数负责设置图形的初始状态,包括坐标轴的范围等。更新函数则定义了动画每一帧的变化,这里以cos函数为例,计算点的新坐标位置。通过FuncAnimation类,设置动画的帧数、初始化函数、更新函数等参数,最后调用plt.show()显示动画。原创 2023-11-23 20:06:54 · 2074 阅读 · 1 评论 -
【OpenCV实现图像:使用OpenCV生成拼图效果】
另一种是考虑间隔,可以选择相邻正方形之间是否存在间隔,以及间隔的大小,同样可以选择是否对高度不能整除的部分进行空白填充。在生成拼图效果时,可以考虑不同的模式,包括是否考虑间隔和如何处理不能整除的部分。在带填充的情况下,会对不能整除的高度部分进行空白填充。相邻正方形之间存在间隙,间隔距离为3像素,同时对高度不能整除的部分进行白色填充。相邻正方形之间存在间隙,间隔距离为3像素,同时高度不能整除的部分直接被忽略。示例图中演示了正方形之间的间隔,高度不能整除的部分填充为白色。原创 2023-11-22 14:12:49 · 1036 阅读 · 0 评论 -
【OpenCV实现图像:使用OpenCV进行图像处理之透视变换】
透视变换可以用于矫正图像中的透视畸变,使得图像中的物体在新的视平面上呈现更加规则的形状。透视变换通常涉及到寻找图像中的特定点集,这些点对应于真实场景中的特定位置。通过这些点的映射关系,可以计算出透视变换的矩阵,然后将整个图像进行变换。上述公式中,u,v代表原始图像坐标,x,y为经过透视变换的图片坐标,其中变换矩阵为3X3形式。接着我们需要挑选四个点,我们这里采用左上,左下,右下和右上,下面的代码把我们挑选的四个点画到图像上.直观的来看,透视变换的作用就是将左侧图像的坐标点。通过计算我们知道,转换矩阵如下。原创 2023-11-22 13:50:19 · 2264 阅读 · 2 评论 -
【OpenCV实现图像:使用OpenCV进行物体轮廓排序】
然后,通过遍历这些排序后的轮廓,并调用 draw_contour 函数绘制,最后使用 cv2.imshow 显示排序后的结果。通过上述步骤,得到了图像中的所有物体的轮廓,接下来定义函数sort_contours函数来实现对轮廓进行排序操作,该函数接受method参数来实现按照不同的次序对轮廓进行排序,比如从左往右,或者从右往左.在这个图中,每个轮廓都被找到,但它们的顺序是混乱的,这使得难以对每个目标进行准确的测量和分析。这个函数简单地检查返回的轮廓元组的长度,根据长度选择正确的轮廓返回位置。原创 2023-11-21 20:05:24 · 1556 阅读 · 0 评论 -
【OpenCV实现图像:在Python中使用OpenCV进行直线检测】
该变换的核心思想是通过在参数空间内进行投票来确定可能存在的几何形状,最终通过检测累积结果找到在参数空间中的极大值,从而获得符合特定形状的参数。一般来说,直线检测的过程可以被描述为在霍夫空间中对每个边缘点进行投票,使得共线的边缘点在霍夫空间中的某一条直线上具有最大的投票数。通过分析霍夫空间中的累积结果,可以确定图像中存在的直线,并获取这些直线的参数,如斜率和截距。在应用霍夫变换进行直线检测之前,通常需要先使用边缘检测算法,以减少图像的数据量并去除不相关的信息,从而保留图像中重要的结构特征。原创 2023-11-21 19:51:28 · 821 阅读 · 0 评论 -
【OpenCV实现图像:OpenCV利用Python创作热力图】
热力图是一种强大的统计图表,通过对数据进行色彩映射,直观展示了数据分布的热度和密度。在绘制热力图时,关键在于指定颜色映射的规则,这决定了图中不同数值的呈现方式。通常,较大的数值以深色或偏暖的色彩表示,而较小的数值则以浅色或偏冷的色彩呈现,从而使观察者能够迅速理解数据的相对大小和趋势。该操作的关键步骤是将图像划分为非重叠的块,块的大小决定了最终像素化效果的粒度。通常,块的尺寸越大,图像看起来越像是由像素块组成。首先,我们来读取样例图像,并对其进行相应的crop操作。原创 2023-11-20 20:11:45 · 1514 阅读 · 0 评论 -
[Python操作Excel指南:读取与写入完整手册]
在数据处理和分析中,Excel文件的读取和写入是常见而重要的任务。本指南介绍了使用pandas、openpyxl、xlrd、pyexcel等库的方法,涵盖了读取和写入Excel的常见场景。下面是一个简要的指南,介绍了在数据处理和分析中使用Python进行Excel读写的常见方法。上述代码使用pandas库的read_excel函数,方便地读取Excel文件内容,并将数据存储在一个DataFrame中。这段代码使用openpyxl库打开Excel文件,并遍历工作表的每一行,将数据打印出来。原创 2023-11-20 20:02:32 · 714 阅读 · 0 评论 -
【OpenCV实现图像:OpenCV进行OCR字符分割】
例如,在文档扫描、数字识别等任务中,通过合理运用传统图像处理技术,可以快速、准确地完成字符切分,为后续的OCR处理奠定基础。这一步的目的是简化图像,使系统能够更轻松地识别图像中的不同形状,同时去除颜色信息,从而减少处理的复杂性。在OCR任务中,字符切分是一个关键的步骤,它能够将整个文本图像分割成单个字符,为后续的处理任务提供基础。OCR(Optical Character Recognition):全称光学字符识别,是一项技术,通过使用光学和图像处理技术,将图像中的文字转换为可编辑的文本。原创 2023-11-16 20:02:14 · 1918 阅读 · 0 评论 -
【【OpenCV实现图像:用OpenCV进行模板匹配】
模板匹配是一种在图像处理领域广泛应用的技术,旨在寻找目标模板在源图像中的位置。该算法的核心思想是通过比较模板与源图像的局部区域,逐像素滑动,创建一个相似度图,反映了模板与源图像各位置的相似程度。使用OpenCV库实现模板匹配,该过程类似于在卷积神经网络中使用卷积核的方式。模板匹配的基本原理:模板匹配的基本原理是在源图像上通过逐像素滑动的方式,将模板与源图像的每个部分进行比较。这相当于在图像上进行卷积操作,其中每个像素值表示了模板与源图像相应区域的相似性。这个过程生成了一个相似度图,通过分析该图,可以识别原创 2023-11-14 20:39:23 · 1283 阅读 · 0 评论 -
【OpenCV实现图像:用OpenCV图像处理技巧之巧用直方图】
直方图均衡化是一种有效的方法,通过重新分配像素的强度值,使图像的亮度分布更均匀,提高图像的对比度和细节。通过分析图像的直方图,可以采取针对性的方法,提高低光照图像中物体的可见性,改善图像的细节,并校正曝光过度或曝光不足的问题。直方图匹配的应用,通过将目标图像的直方图调整到参考图像的直方图,实现两者之间的色彩一致性。这在图像配准和合成中有广泛的应用,提高了图像处理的精度和效果。一般来说,通过合理利用一些直方图的技巧,可以用于提高低光照拍摄图像中物体的可见性,改善图像的细节,以及校正曝光过度或曝光不足的图像。原创 2023-11-13 20:35:11 · 1006 阅读 · 1 评论 -
【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法2】
灰色世界算法是一种白平衡算法,其原理基于假设图像的平均颜色应该是灰色的。最终,通过灰色世界校正,图像呈现更为真实和自然的颜色。Ground Truth算法是一种专业应用的白平衡算法,它依赖于图像中有参考白色补丁的信息。Gray World算法假设图像中的平均颜色应该是灰色的,通过调整图像的色调来使平均颜色趋近于灰色。通过调整图像的颜色映射关系,灰色世界算法能够提高图像的色彩准确性,使得图像更符合人眼感知的自然色彩。白平衡的目标是校正图像中的颜色偏差,使得白色在图像中呈现真实的白色,从而提高图像的质量。原创 2023-11-12 20:48:52 · 945 阅读 · 0 评论 -
【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法】
定义了一个函数 calc_color_overcast(image),该函数用于计算图像中每个颜色通道(红色、绿色、蓝色)的统计信息,包括均值、标准差、最小值、中位数、80th、90th、99th 百分位数以及最大值。其目标是通过缩放图像的颜色通道,使得每个通道中最亮的像素变为白色。通过调整每个通道的亮度,算法可以校正图像的颜色投射,实现图像的白平衡。白平衡是一项用于校正由不同照明条件引起的图像颜色偏差的技术。这个过程非常重要,因为它确保了图像中的颜色是准确的,同时也使图像对人眼来说看起来更加自然。原创 2023-11-09 19:44:45 · 1840 阅读 · 0 评论 -
【OpenCV实现图像:图像处理技巧之空间滤波】
在图像处理中,空间滤波器的作用非常强大。不同的滤波器模板可以用于实现各种图像处理任务,例如边缘检测、图像锐化和模糊等。通过深入了解每种滤波器的特点和应用场景,我们可以更好地运用它们,释放创造力,探索图像处理的无限可能性。通过本文的介绍,希望读者对空间滤波器有了更加清晰的认识,能够在实际应用中灵活运用这些知识,创造出更加引人注目的图像效果。原创 2023-11-08 16:57:51 · 1081 阅读 · 0 评论 -
【OpenCV实现图像:图像处理技巧形态学滤波之腐蚀操作,RuntimeError: sequence argument must have length equal to input rank】】
腐蚀是形态学图像处理中的一种操作,它通过从图像的边缘逐渐去除像素,从而精细地缩小图像中的对象。腐蚀操作的原理是通过考虑每个像素的周围区域,将该像素的值设置为周围区域内所有像素的最小值。简单来说,腐蚀操作可以使图像中的对象变小,去除对象边界上的像素,从而实现图像的精细化处理。例如,如果选择使用一个正方形作为的结构元素,它会考虑到像素周围的所有相邻像素。相反,如果选择一个较小的结构元素,腐蚀操作的效果会更加细微,可能只会去除对象的边缘像素。openAI 的 GPT 大模型的发展历程。首先导入我们今天的图像。原创 2023-11-03 20:15:19 · 479 阅读 · 0 评论 -
【OpenCV基于HSV空间的彩色图像分割技术报错:ValueError: the input array must be have a shape =】= (.., ..,[ ..,】
首先会想到的是进行crop相关的操作,这在某种程度上是可行的,但是这通常也会有一些不相关的像素会被包括在内,我确信大多情况下不希望这样。这个报错是由于rgb2hsv函数期望的输入是一个RGB图像,其形状应该是(高度, 宽度, 3),表示三个颜色通道。HSV颜色空间在图像分割领域的用途,并通过一个具体的示例来对其进行讲解,主要通过分析HSV相应的通道上不同的阈值来对设置不同的掩码,进而对不同的对象进行分割。一般来说,HSV代表色调、饱和度和亮度,稍后将在分割图像时使用来自HSV颜色空间的信息。原创 2023-11-01 14:45:54 · 156 阅读 · 0 评论 -
【OpenCV实现图像:用Python生成图像特效,报错ValueError: too many values to unpack (expected 3)】
错误提示表明在(r, g, b) = img.getpixel((x, y))这一行代码中,getpixel((x, y))返回的值不是期望的3个像素通道值(红、绿、蓝),而是更多的值,因此Python无法将这些值正确地分配给(r, g, b)。然后,我们获取了图像的宽度和高度,并创建了一个新的图像对象new_img,它具有相同的大小。这个文章里面的东西被参考,我用来做方法二,可以说有点用,但是方法一是最好的办法,避免方法二的传参问题,如果有参数传递错误,或者是版本问题导致库的传参问题,可以使用方法二。原创 2023-10-31 13:09:52 · 742 阅读 · 0 评论 -
【OpenCV实现图像找到轮廓的不同特征,就像面积,周长,质心,边界框等等。】
首先,我们找到了矩形的轮廓cnt。接着,我们使用returnPoints=True选项来计算其凸包,得到以下四个点的坐标值:[[234 202]],[[51 202]],[[51 79]],[[234 79]]。现在我找到了它的凸包,returnPoints=True,我得到了以下值:[[234 202]],[[51 202]],[[51 79]],[[234 79]],它们是矩形的四个角点。该函数返回一个四元组(x,y,w,h),其中(x,y)表示矩形左上角的坐标,(w,h)表示矩形的宽度和高度。原创 2023-10-30 20:40:43 · 1197 阅读 · 0 评论 -
【OpenCV实现图像梯度,Canny边缘检测】
接着,Canny算法使用双阈值(Double Thresholding)来检测强边缘和弱边缘,并通过连接强边缘来得到最终的边缘图像。尽管边缘 C 的位置在 maxVal 下面,但是因为它和边缘 A 相连接,所以我们认为它也是个有效边缘,如此得到了一条完整的曲线。在此阶段,我们需要确定哪些边缘是真实的,哪些是噪声或者假的。如果我们希望找到所有的边缘,更好的方法是将输出的数据类型保持在一个更高的精度范围内,例如cv.CV_16S、cv.CV_64F等,然后取其绝对值,最后再转换回cv.CV_8U类型。原创 2023-10-29 20:26:08 · 591 阅读 · 0 评论 -
[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]
按下键盘的 ESC 键,按下 ESC 键以后终端坐下角的“插入”字样就会消失,此时你就不能在输入任何文本了,如果想再次输入文本的话就按下“a”键重新进入到输入模式。关闭 Gedit:如果你想退出整个Gedit编辑器,可以点击菜单栏的“File”(文件)选项,然后选择“Quit”(退出),或者直接使用快捷键(Ctrl + Q)。输入相应的编号并按下回车键,即可选择默认的Gedit版本。保存文件:点击菜单栏的“File”(文件)选项,然后选择“Save”(保存),或使用快捷键(Ctrl + S)来保存文件。原创 2023-10-27 21:29:23 · 4307 阅读 · 0 评论 -
【OpenCV实现平滑图像形态学变化】
它的基本思想是通过内核的滑动,只要内核下的像素中有一个为1,中心像素就会被赋值为1(这类似于逻辑或运算)。在前面的例子中,我们手动创建了一个矩形内核,但在实际应用中,可能需要不同形状和大小的内核。使用cv.erode()函数,我们可以将内核滑动在图像上,将内核覆盖下的像素点都为1时,中心像素点就会被赋值为1,其他时候都为0,从而缩小白色区域。在腐蚀操作中,一个内核(kernel)在图像上滑动,如果内核覆盖下的所有像素都为1(即白色,表示前景物体),那么中心像素点就会被赋值为1,否则被腐蚀掉(赋值为0)。原创 2023-10-27 21:12:34 · 648 阅读 · 0 评论 -
【OpenCV实现平滑图像处理】
高斯滤波仅仅是一个空间函数,即在滤波时只考虑相邻像素的值。举个例子,如果我们想在一幅图像上尝试平均滤波,我们可以使用一个简单的平均核,该核中的所有元素值相等,代表了平均操作。然而,需要注意的是,模糊操作也会稍微模糊图像的边缘,尽管有一些特殊的模糊技术可以保持边缘的清晰度。定制的低通滤波器可以根据图像特性进行调整,例如在面对强烈噪音时增加滤波器的大小,或者根据图像中对象的大小调整滤波器的标准差。中值模糊是一种特殊的滤波技术,它的原理是在核的覆盖区域内找到像素值的中间值,并将中间值赋给核中心的像素点。原创 2023-10-26 19:29:26 · 1043 阅读 · 0 评论 -
【OpenCV实现图像阈值处理】
这种方法根据像素周围的小区域确定每个像素的阈值,因此,同一张图像的不同区域可以获得不同的阈值,从而更好地适应图像中的光照变化。图像阈值调整是将图像的像素值按照一定规则进行二值化处理,OpenCV提供了cv.threshold函数,支持多种阈值处理类型,如二值化、反二值化、截断、阈值以下置零等。为了选择最佳的阈值 tt,算法将尝试所有可能的阈值,并计算对应的两个类别的内部方差。该算法的目标是找到一个阈值 tt,使得将图像的灰度级别分为两个类别(背景和前景),并且这两个类别的内部方差最小。原创 2023-10-25 20:54:28 · 892 阅读 · 0 评论 -
【OpenCV实现图像的几何变换】
在透视变换中,我们需要一个 3 × 3 的矩阵,这个矩阵可以将原图像中的任意点映射到输出图像中的对应点。在进行仿射变换时,我们需要在原图像中选择三个非共线的点和它们在输出图像中对应的位置。在这个例子中,pts1 是原图像中的四个点,pts2 是它们在输出图像中的对应位置。在这个例子中,pts1是原图像中的三个点,pts2是它们在输出图像中的对应位置。函数cv.getAffineTransform计算了仿射变换矩阵M,然后cv.warpAffine函数将该矩阵应用到原图像上,得到输出图像dst。原创 2023-10-25 19:22:34 · 759 阅读 · 0 评论