Python
会的东西有点杂
机电专业本硕,在一自动化德企搞电气控制多年,尤爱代码编程,喜欢DIY各种小制作。
展开
-
应用OpenCV绘制箭头
语法格式:cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]])默认值为1,设置为-1时表示绘制填充图形(绘制直线时,不能设置为-1)。lineType表示线条类型,默认值为cv2.Line_8。color为线条的颜色。通常使用BGR模型表示颜色,如(255,0,0)表示蓝色。pt1:直线的起点位置,是一个坐标点,类似(X,Y)这样。pt2:直线的终点位置,是一个坐标点,类似(X,Y)这样。原创 2024-01-06 20:23:45 · 1235 阅读 · 0 评论 -
基于OpenCV的透视变换
透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。格式:cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])首先根据变换前后的四个点用cv.getPerspectiveTransform()生成3×3的变换矩阵。src:原图像中4个点的坐标。原创 2024-01-06 19:51:03 · 692 阅读 · 0 评论 -
基于OpenCV的图像平移
flages:表示插值方式,默认为 flags=cv2.INTER_LINEAR,表示线性插值,cv2.INTER_NEAREST为最近邻插值,cv2.INTER_AREA为区域插值,cv2.INTER_CUBIC为三次样条插值,cv2.INTER_LANCAOS4为Lanczos插值。图像的平移操作是将图像的所有像素坐标进行水平或者垂直方向的移动,也就是所有像素点按照给定的偏移量在水平方向上沿X轴,垂直方向上沿y轴移动。OpenCV中实现图像平移的方法。dsize:输出图像的大小。原创 2024-01-05 10:23:15 · 796 阅读 · 0 评论 -
基于OpenCV的图像缩放
interpolation表示插值方式,该参数值以下5种,在缩小时推荐使用cv2.INTER_AREA,扩大时推荐使用cv2.INTER_CUBIC和cv2.INTER_LINEAR。缩放是将图像的尺寸变小或变大的过程,即减少或增加原图像数据的像素个数,或者说通过增加或删除像素点来改变图像的尺寸;图像缩放算法:最近邻插值算法、双线性插值算法、立方插值算法、像素关系重采样算法。dsize表示转换后的图像大小。src表示用于缩放的原图像。fx表示水平方向的缩放比例。dst表示转换后的图像。原创 2024-01-05 10:17:00 · 755 阅读 · 0 评论 -
基于OpenCV的透视变化
透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。格式:cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])首先根据变换前后的四个点用cv.getPerspectiveTransform()生成3×3的变换矩阵。src:原图像中4个点的坐标。原创 2024-01-04 10:25:19 · 665 阅读 · 0 评论 -
基于OpenCV的仿射变换
flages:表示插值方式,默认为 flags=cv2.INTER_LINEAR,表示线性插值,cv2.INTER_NEAREST为最近邻插值,cv2.INTER_AREA为区域插值,cv2.INTER_CUBIC为三次样条插值,cv2.INTER_LANCAOS4为Lanczos插值。仿射变换可以通过一系列的原子变换的复合来实现包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear)dst:输出图像,其大小为dsize。原创 2024-01-04 10:22:11 · 844 阅读 · 1 评论 -
OpenCV中实现图像旋转的方法
OpenCV中实现图像旋转的方法函数:cv2.flip()功能:水平或者垂直翻转格式:dst= cv2.flip(src,flipCode[,dst])参数说明:src:输入图像dst:和原图像具有相同大小、类型的目标图像。flipCode:旋转类型 ,取值如下:0:绕x轴翻转(垂直翻转)大于0整数:绕y轴翻转(水平翻转)小于0整数:同时绕x轴和y轴翻转(水平和垂直翻转)原创 2024-01-03 20:29:02 · 811 阅读 · 0 评论 -
基于 EigenFaces 的人脸检测
EigenFaces 人脸检测是一种从主成分分析(Principal Component Analysis,PCA)中导出的人脸识别和描述技术。特征脸方法就是从大量的人脸图像中,寻找出人脸的共性。将眼睛、面颊、下颌样板采集协方差矩阵的特征向量统称为特征子脸。原创 2024-01-02 08:42:16 · 1115 阅读 · 0 评论 -
基于 Haar 特征的人脸检测
Haar分类器采用的是Viola-Jones人脸检测算法该算法需要用到大量的积极图片(包含人脸的图片)和消极图片(不包含人脸的图片),从中提取类Haar特征( Haar-like features),经过反复训练,最终得出一个级联检测器,以此来检测人脸。Haar分类器使用Haar-like小波特征和积分图方法进行人脸检测,并与AdaBoost训练出的强分类器进行级联,增强了人脸检测的准确率。原创 2024-01-02 08:32:15 · 521 阅读 · 0 评论 -
基于OpenCv的车道检测
通过图像的灰度化,可以大大减小计算量和不必要的干扰由于边缘提取对噪声非常敏感,所以还要对图像进行适当的降噪处理可以使用高斯滤波,去除不必要的噪点。将draw_lanes(hough_lines_img, hough_lines, draw_type='line')中最后的参数修改为‘area’。使用霍夫直线变换,将车道图像转换成直线图像,以便于后续的计算。三、使用ROI区域截取,截取需要的部分,再次剔除干扰。一、将图像灰度化,并进行适度的高斯滤波,剔除干扰。四、利用霍夫直线检测,检测出图像中直线部分。原创 2024-01-01 12:21:04 · 945 阅读 · 0 评论 -
3D视觉-结构光测量-线结构光测量
线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。原创 2023-12-30 18:03:06 · 1413 阅读 · 0 评论 -
语义分割的常用方法和评价准则
这样的评价指标可以判断目标的捕获程度(使预测标签与标注尽可能重合),也可以判断模型的精确程度(使并集尽可能重合)。目前主流的语义分割网络一般是遵循下采样,上采样,特征融合,然后重复该过程,最后经过。指的是两块区域相交的部分(两个部分的并集),如图中绿色部分。):每一类像素的精度的平均值。):每一类出现的频率作为权重。):每一类像素正确分类的个数。每一类像素的实际个数。原创 2023-10-25 08:51:52 · 307 阅读 · 0 评论 -
语义分割的特征和应用场景
这类技术主要是识别图像区域。语义分割标记每个像素所指的含义,而不是检测整个图像或图像的一部分。为了理解语义分割的特征,还要与其他常见的图像分类技术相比较。这类技术主要是识别图像中“有什么”和“它在哪里”。这类技术主要是识别图像。原创 2023-10-24 08:52:09 · 367 阅读 · 0 评论 -
语义分割概述
在图像领域,语义指的是对图像意思的理解。语义分割就是按照“语义”给图像上目标类别中的每一点打上一个标签,使得不同种类的东西在图像上被区分开来,可以理解成像素级别的分类任务。语义分割是一种典型的计算机视觉问题,其涉及将一些原始数据(例如,平面图像)作为输入并将它们转换为具有突出显示的感兴趣区域的掩模。原创 2023-10-24 08:50:11 · 322 阅读 · 0 评论 -
目标检测的方法
目标检测任务可分为两个关键的子任务:目标分类和目标定位。目标分类负责判断所选区域是否有感兴趣类别的物体出现,输出一系列带分数的标签,表明感兴趣的物体在所选区域出现的可能性。目标定位负责确定所选区域感兴趣类别物体的位置和范围,通常存储在称为。目标检测大致分为两个方向:基于传统的目标检测算法和基于深度学习的目标检测算法。目标检测算法可以在一个阶段内直接产生物体的类别概率和位置坐标值,相比于。目标检测算法不需要产生候选阶段,将目标框的定位问题转化为回归((更快区域卷积神经网络)等,此类算法以准确率高为特点。原创 2023-10-23 21:06:59 · 674 阅读 · 0 评论 -
目标检测技术概述
在计算机视觉众多的技术领域中,目标检测()也是一项非常基础的任务,图像分割、物体追踪、关键点检测等通常都要依赖于目标检测。在目标检测时,由于每张图像中物体的数量、大小及姿态各有不同,也就是非结构化的输出。图像分类、目标检测和图像分割的区别?计算机视觉中,图像分类、目标检测和图像分割都属于基础、也是目前发展最为迅速的3个领域,下面具体看一下这几个任务之间的区别。图像分类:输入图像往往仅包含一个物体,目的是判断每张图像是什么物体,是图像级别的任务,相对简单,发展也最快。原创 2023-10-23 21:04:57 · 1125 阅读 · 1 评论 -
基于图像识别的迁移学习之二
函数来加载预训练模型,其中两个模型中使用参数基本一致。代表随机初始化,即选择不加载预训练权重。include_top:是否保留顶层的。代表不池化,最后一个卷积层的输出为。就是其中的预训练模型,可以通过。:可选,图片分类的类别数,仅当。并且不加载预训练权重时可用;时,该参数指定了池化方式。’代表加载预训练权重;’代表全局平均池化,‘’代表全局最大值池化;,图片的宽高必须大于。原创 2023-10-13 07:00:00 · 92 阅读 · 0 评论 -
基于图像识别的迁移学习之一
输入和输出的维度是不一样的,所以不能连续串联,它的作用本来就是为了改变。,输入和输出的维度是一样的,所以可以串联多个;加载数据部分同上一个案例,只需把数据输入到预训练的。个卷积核的卷积层,加上。个神经元的全连接层和。个神经元的全连接层。原创 2023-10-11 10:11:42 · 405 阅读 · 0 评论 -
深度学习之微调
在现代深度学习领域,精细调整已经成为一种非常重要的技术手段。原创 2023-10-11 10:05:54 · 321 阅读 · 0 评论 -
迁移学习的特点
选择源任务:从可用的模型中选择预训练的元模型,许多研究机构会发布已经在大量的且具有挑战性的数据集上训练好的模型,在可用模型的模型池里面也能找到这些模型。在模型使用方面,一般的深度学习需要针对每个任务分别建模,而在迁移学习中,任务不需要重新开始建立模型,可以重用之前的模型。重用模型:然后可以将预训练的模型用作感兴趣的另一个任务模型的起点,这取决于所使用的建模技术,可能涉及使用全部或部分模型。:可以在自己的预测模型问题上使用迁移学习,通常有两种方法:开发模型方法和预训练模型方法。迁移学习与一般深度学习的区别。原创 2023-10-10 07:00:00 · 144 阅读 · 0 评论 -
迁移学习的概念
开发模型的过程中,顾名思义就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习。数据的标注是一个耗时且昂贵的操作,因为没有足够的标定数据用来学习,使得这些领域一直不能很好的发展。深度学习的目标是构建一个尽可能通用的模型,使得这个模型对于不同用户、不同设备、不同环境、不同需求,都可以很好地进行满足。原创 2023-10-10 07:00:00 · 66 阅读 · 0 评论 -
基于卷积神经网络的图像识别-案例实施2
它在模型训练优化的过程中通过让每个参数获得自适应的学习率,来获得优化质量和速度的双重提升。优化函数——一个比较智能的优化函数方法,自适应时刻估计方法(超参数具有很好的解释性,且通常无需调整或仅需很少的微调;更新的步长能够被限制在大致的范围内(初始学习率);能自然地实现步长退火过程(自动调整学习率);适用于梯度稀疏或梯度存在很大噪声的问题。很适合应用于大规模的数据及参数的场景;实现简单,计算高效,对内存需求少;参数的更新不受梯度的伸缩变换影响;适用于不稳定目标函数;此次训练过程中使用了。原创 2023-10-09 07:00:00 · 130 阅读 · 0 评论 -
基于卷积神经网络的图像识别-案例实施1
的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。同样提供了序列化方法,可以方便的帮助搭建神经网络。整理的一个用于识别普适物体的小型数据集。编写的开源人工神经网络库,可以作为。数据,识别图片中的内容。彩色图像组成,每个类有。原创 2023-10-09 07:00:00 · 247 阅读 · 0 评论 -
卷积神经网络的发展历史-ResNet
虽然在“多个非线性层可以拟合任意函数”这一假设下二者并无区别,但是Kaiming。假设模型学习后者,将更容易进行优化与收敛。(在残差结构中,模型利用。竞赛横扫竞争对手,分别拿下分类、定位、检测、分割任务的第一名。Residual Block),使得原本所要拟合的函数,),不仅解决了神经网络中的退化问题还在同年的。,这样也解决了梯度消失现象)。在文中提出了残差结构(原创 2023-10-08 07:00:00 · 1032 阅读 · 0 评论 -
卷积神经网络的发展历史-VGG
关于这样做的好处有如下两点:减少网络参数量;由于参数量被大幅减小,于是可以用多个感受野小的卷积层替换掉之前一个感受野大的卷积层,从而增加网络的非线性表达能力。),反而采用感受野小的卷积核(上作为分类任务第二名、定位()任务第一名的基础网络出现。原创 2023-10-08 07:00:00 · 506 阅读 · 0 评论 -
卷积网络的发展历史-AlexNet
在图像分类领域不得不提的就是ImageNet大规模视觉挑战赛(ILSVRC),它被称为深度学习在图像分类任务研究方面进展的标杆。AlexNet,引起了许多学者对深度学习的研究,可以算是深度学习的热潮的起始标志。并在测试时,从图像的四个角以及中心进行裁剪,并进行镜像翻转,这样可以得到。网络结构,从而可以设计出更“大”、更“深”的网络(相较于当时的算力来说);小于池化核的大小,从而使相邻的池化区域存在重叠部分,这一操作称为。的高斯分布的随机变量对主成分进行扰动。),加快网络收敛速度;,并做随机的镜像翻转(原创 2023-10-07 07:00:00 · 647 阅读 · 0 评论 -
卷积网络的发展历史-LeNet
LeNet是CNN结构的开山鼻祖,第一次定义了卷积神经网络的结构。LeNet模型包含了多个卷积层和池化层,以及最后的全连接层用于分类。其中,每个卷积层都包含了一个卷积操作和一个非线性激活函数,用于提取输入图像的特征。池化层则用于缩小特征图的尺寸,减少模型参数和计算量。全连接层则将特征向量映射到类别概率上。原创 2023-10-07 07:00:00 · 609 阅读 · 0 评论 -
计算机图像处理-中值滤波
区域里面的中值,将每一像素点的灰度值设置为该点某邻域窗口内所有像素点灰度值的中值。中值对椒盐噪声(脉冲噪声)有很好的抑制作用。中值滤波的原理是把以当前像素为中心的小窗口内的所有像素的灰度按从小到大排序,取排序结果的中间值作为该像素的灰度值。非线性滤波是利用原始图像跟模版之间的一种逻辑关系得到结果,常用的非线性滤波方法有中值滤波和高斯。个像素进行排序,最后将这个矩阵的中心点赋值为这九个像素的中值。就是这串数字的中值。由此可以应用到图像处理中。矩阵中对中心值取值的计算过程。来实现中值滤波,其中参数。原创 2023-10-01 07:00:00 · 365 阅读 · 0 评论 -
计算机图像处理-高斯滤波
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个毛玻璃在观察图像,这与镜头焦外成像效果以及普通照明阴影中的效果都明显不同。高斯平滑也用于计算机视觉算法中的预处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现)。原创 2023-10-01 07:00:00 · 335 阅读 · 0 评论 -
计算机图像处理-均值滤波
线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如均值滤波器(模板内像素灰度值的平均值)、高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定的模板,因此滤波器的转移函数是可以确定并且是唯一的(转移函数即模板的傅里叶变换)。均值滤波是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等)。OpenCV中利用cv2.blur(img,ksize来实现均值滤波,其中参数img为原图像,ksize。原创 2023-09-30 07:00:00 · 298 阅读 · 0 评论 -
计算机图像处理:椒盐噪声和高斯噪声
无论是均衡化直方图和图像滤波,都一定程度上降低了图像阈值分割的难度,直方图增强图像内的对比度,图像滤波消除图像内的噪声干扰。邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。图像滤波的两个目的是提取特征(抽出对象的特征作为图像识别的特征模式)和清除噪声(为适应图像处理的要求,消除图像数字化时所混入的噪声)。类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。原创 2023-09-30 07:00:00 · 327 阅读 · 0 评论 -
计算机图像处理-直方图均衡化
直方图均衡化直方图均衡化是图像灰度变换中有一个非常有用的方法。图像的直方图是对图像对比度效果上的一种处理,旨在使得图像整体效果均匀,黑与白之间的各个像素级之间的点分布更均匀一点。通过这种方法,亮度可以更好地在直方图上分布。直方图均衡化(histogram)的目标是创建一幅在整个亮度范围内具有相同亮度分布的图像,输入直方图H[p]和亮度范围[p0,pk],直方图均衡化的目标是找到一个单调的像素亮度变换q=T(p),使输出直方图G[q]在整个输出亮度范围[q0,qk]原创 2023-09-29 07:00:00 · 297 阅读 · 0 评论 -
图像直方图的基础知识
任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是两个区域直方图的和。由于图像包含有大量的像元,其像元灰度值的分布应符合概率统计分布规律。图像的灰度值是离散变量,因此直方图表示的是离散的概率分布。若以各灰度级的像元数占总像元数的比例值为纵坐标轴做出图像的直方图,将直方图中各条形的最高点连成一条外轮廓线,纵坐标的比例值即为某灰度级出现的概率密度,轮廓线可近似看成图像相应的连续函数的概率分布曲线。原创 2023-09-29 07:00:00 · 326 阅读 · 0 评论 -
计算机图像处理:图像轮廓
图像阈值分割主要是针对图片的背景和前景进行分离,而图像轮廓也是图像中非常重要的一个特征信息,通过对图像轮廓的操作,就能获取目标图像的大小、位置、方向等信息。表示建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。分别为输入的图像、轮廓搜索模式(决定了轮廓的提取方式)、轮廓近似方法(决定了如何表达轮廓)。表示压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需。分别为返回的轮廓和图像的拓扑信息(轮廓层次)。分别为输入的图像、绘制的轮廓、轮廓填充和轮廓的颜色。原创 2023-09-28 07:00:00 · 683 阅读 · 0 评论 -
Python编程基础-多进程与多线程
进程是资源分配的基本单位,线程是CPU执行和调度的基本单位。多线程适用于IO密集型任务,而计算密集型任务中应该使用多进程以便利用多核CPU并行完成计算。原创 2023-08-23 07:00:00 · 73 阅读 · 0 评论 -
Python编程基础-文件的写入和关闭
写文件与读文件相似,都需要先创建文件对象连接,打开文件时是以“写”模式或“添加”模式打开,与读文件时不能添加或修改数据类似,写文件时也不允许读取。模式打开已有文件时,会覆盖文件原有内容,从头。可以把打开的文件放在 with。如果文件不存在,则创建该。将字符串参数写入文件。注意换行需要自己添加。原创 2023-08-22 07:26:31 · 237 阅读 · 0 评论 -
Python编程基础-文件的打开和读取
使用open()函数打开文件,返回一个file对象使用file对象的读/写方法对文件进行读/写的操作使用file对象的close()方法关闭文件原创 2023-08-22 07:21:39 · 427 阅读 · 0 评论 -
Python编程基础-类和对象
例如:定义含有实例属性(姓名name, 年龄age)和类属性(人数num)的Person人员类。定义含有实例属性(姓名name, 年龄age)和类属性(人数num)的Person人员类num=1 #类属性def __init__(self, str, n): #构造函数self.name = str #实例属性self.age=ndef SayHello(self): #成员函数")def PrintName(self): #成员函数。原创 2023-08-21 11:58:12 · 89 阅读 · 0 评论 -
Python编程基础-类和对象
关键字之后依次是空格、类的名字和冒号,最后换行并定义类的内部实现。类名的首字母一般要大写,一般推荐参考惯例来命名,并在整个系统的设计和实现中保持风格。面向对象程序设计的一个关键性观念是将数据以及对数据的操作封装在一起,组成一个相互依存、不可分割的整体,即。,面向对象程序设计的关键就是如何合理地定义和组织这些类以及类之间的。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了。原创 2023-08-21 11:53:02 · 121 阅读 · 0 评论 -
Python编程基础-模块
这种方式引入的时候,调用函数时只能给出函数名,不能给出模块。文件都可以作为一个模块,模块的名字就是。原创 2023-08-20 10:41:06 · 130 阅读 · 0 评论