自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 基于Python3的数据结构与算法 - 04 快速排序

此时我们需要自己写出partition(归位函数),对元素进行归位。

2024-02-23 22:06:39 354

原创 基于Python3的数据结构与算法 - 03 插入排序

观察我们写的算法后发现:该算法的时间复杂度也为O(

2024-02-21 04:54:56 113

原创 基于Python3的数据结构与算法 - 02 冒泡排序和选择排序

排序:将一组”无序“的记录序列调整为”有序“的记录序列。

2024-02-20 03:23:09 428

原创 基于Python3的数据结构与算法 - 01 复杂度和列表查找

算法基基础

2024-02-19 00:13:19 1298

原创 OpenCV-42 直方图均匀化

直方图均匀化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均匀,提高图像的对比度。达到改善图像主管视觉效果的目的。最初的像素点都在0-7之间,最后我们将其规划到0~255中间。二、直方图均匀化在OpenCV中的运用。

2024-02-18 00:07:11 709

原创 OpenCV-41 使用掩膜的直方图

掩膜即为与原图大小一致的黑底白框图。

2024-02-17 00:08:12 785

原创 OpenCV-40 绘制直方图

可以利用matplotlib把OpenCV统计得到的直方图绘制出来。

2024-02-16 02:52:31 559

原创 OpenCV-39 图像直方图

在统计学中,直方图是一种对数据情况的图形表示,是一种二维统计图表。图像直方图是一种表示数字图像中的直方图, 标绘了图像中每个亮度值得像素数。可以借助观察该直方图了解需要如何调整亮度分布的直方图。这种直方图中,横坐标得左侧为纯黑、较暗的区域,而右侧为较亮,纯白的区域。直方图可以说或者。

2024-02-15 00:03:58 761

原创 OpenCV-38 图像金字塔

拉普拉斯金字塔(Laplacian pyramid):用于从金字塔底层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。拉普拉斯金字塔图像类似图像边缘,它的大部分元素都是0, 用于图像压缩。,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列。拉普拉斯金字塔由高斯金字塔构成,没有专门的函数。图像金字塔是图像中多尺度表达的一种,最主要用于。

2024-02-14 00:58:00 1071

原创 OpenCV-37 最小外接矩形和最大外接矩形

外接矩形分为和。下图中红色矩形为最小外接矩形,绿色矩形为最大外接矩形。

2024-02-13 01:05:17 581

原创 OpenCV-36 多边形逼近与凸包

findContours后的轮廓信息countours可能过于复杂不平滑,可以用,这就是轮廓的多边形逼近。apporxPolyDP就是以多边形去逼近轮廓,采用的是Douglas-Peucker算法(方法名中的DP)DP算法原理比较简单,核心就是。

2024-02-12 01:28:40 1487

原创 OpenCV-35 查找轮廓

图像轮廓是具有的连续点的曲线,轮廓在形状分析和物体的检测识别中很有用。

2024-02-11 05:20:58 989

原创 OpenCV-34 顶帽操作和黑帽操作

顶帽 = 原图 - 开运算开运算的效果是去除图像外的噪点,因此。通过API --- morphologyEx(img,, kernel)输出结果如下:可以看出通过顶帽操作只留下了图像的噪声点。

2024-02-10 04:17:09 264

原创 OpenCV-33 开运算和闭运算

开运算和闭运算都是腐蚀和膨胀的基本应用。

2024-02-09 00:02:43 719

原创 OpenCV-32 膨胀操作

使用API---dilate(img, kernel, iterationms = 1)膨胀是与腐蚀相反的操作,基本原理是只要保证。,周边无论是0还是非0值,都变为0。

2024-02-08 00:08:14 1025

原创 OpenCV-31 获得形态学卷积核

通过下面API---getStructuringElement(shape,ksize,[, anchor])OpenCV提供了获取卷积核的API,不需要我们手动创建卷积核。下面输出不同形状的卷积核(都为6*6)

2024-02-07 00:04:19 1102

原创 OpenCV-30 腐蚀操作

腐蚀操作也是用卷积核扫描图像,只不过,如果卷积核内所有像素点都是白色,那么即为白色。大部分时候腐蚀操作使用的都是全为1的卷积核。

2024-02-06 04:40:07 1471

原创 Python---网络编程知识详解(学习笔记)基础部分

特点:在几年前已经用光了,如果有一个新兴的国家需要一些ipv4的地址,则没有充足的地址。当我们发送信息时,如果仅知道IP地址是不够的,还需要端口号才能将信息发送到指定的程序。特点:号称能够给全世界上的每一个沙子都可以用唯一一个标记来标识,可以理解为无穷个。因为每一组数字的最大范围为0~255,因此该网络下最多有256台电脑。而端口用来标记电脑中的某一个程序。端口通过端口号来进行区分标记,端口号的范围为0~65535。IPv4:在全世界的设备几乎都是这样的地址。,每组数据用点隔开,数据的范围为0~255。

2024-01-30 19:56:00 764

原创 OpenCV-29 自适应阈值二值化

在前面的部分我们使用的是全局阈值,。当时这种方法并不适应于所有情况。尤其是当。这种情况下我们需要采用自适应阈值。此时的阈值时根据图像上的每一个小区域计算与其对应的阈值。因此在,从而使我们能在亮度不同的情况下得到更好的结果。

2024-01-29 00:15:00 440

原创 OpenCV-28 全局二值化

什么是形态学?1)指一系列处理图像的图像处理技术2)形态学的基本思想是利用一直)来测量或提取输入图像中相应的,以便进一步进行图像分析和目标识别。3)这些处理方法基本是对二进制图像进行处理,即黑白图像。4)卷积核决定图像处理后的效果。

2024-01-28 05:09:48 529

原创 OpenCV-27 Canny边缘检测

Canny边缘检测算法是John F.Canny与1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的:表示出尽可能多的实际边缘,同时尽可能的减小噪声产生的误报。:标识出的边缘要与图像中的实际边缘尽可能接近。:图像中的边缘只能标识一次。Canny边缘检测的一般步骤:1)去噪。边缘检测容易受到噪声干扰,在进行边缘检测前通常需要先进行去噪,一般用去除噪声。2)计算梯度:对平为了方便一般可以改用绝对值。——计算出梯度——计算出角度,从而得到方向。

2024-01-27 19:26:27 677

原创 OpenCV-26 拉普拉斯算子

索贝尔算子是模拟一阶导数,一阶导数越大的地方说明变化越剧烈,越有可能是边缘。但是如果我们对f(t)求二阶导数呢?可以发现边缘处的二阶导数 = 0,因此,我们可以利用这一特性去寻找图像的边缘,但是,以拉普拉斯算子推导过程这样就得到了拉普拉斯算子的卷积核,即卷积模板。

2024-01-25 04:19:19 589

原创 OpenCV-25sobel算子(索贝尔算子)

中间一行相当于f(x),第3行相当于f(x+1),第1行相当于f(x-1);相当于第3行的像素点减去第1行的像素点最后得到的就是垂直方向上的近似梯度。中间一列相当于f(x),第3列相当于f(x+1),第1列相当于f(x-1);相当于第3列的像素点减去第1列的像素点最后得到的就是水平方向上的近似梯度。的值,是图像的显著特点之一,在图像特征提取,对象检测,模式识别等方面都有重要的作用。前面所提到的滤波都是用于降噪的,去掉噪声,而算子是用来找边界,来识别图像的边缘。图像时二维的,即沿着宽度/高度两个方向。

2024-01-15 23:39:15 663

原创 OpenCV-24双边滤波

而高斯滤波只用了位置信息。对于高斯滤波,仅用空间距离的权值系数与图像卷积后,确定中心点的灰度值。即认为离中心点越近的点,其权重系数越大。双边滤波加入了对灰度信息的权重,即在邻域内,

2024-01-14 01:18:37 983

原创 OpenCV-23中值滤波

中值滤波原理比较简单,假设有一个数组[1556789],取其中的中间值(即中位数)作为卷积后的结果即可,中值滤波对胡椒噪音(也叫椒盐噪音)效果明显。对下面带胡椒噪声的图片进行处理。

2024-01-13 01:09:39 665

原创 OpenCV-22高斯滤波

要理解高斯滤波首先要直到什么是高斯函数,高斯函数是符合高斯分布的(也叫正态分布)的数据的概率密度函数。高斯函数的特点是以x轴某一点(这一点称为均值)为对称轴,越靠近中心数据发生的概率越高,最终形成一个两边平缓,中间陡峭的钟型(有的地方也叫帽子)图形。高斯函数的一般形式:以(0,0)和(0,0,0)为中点:高斯滤波就是使用符合高斯分布的卷积核对图片进行卷积操作,所以高斯滤波的重点是如何计算符合高斯分布的卷积核,即高斯模板:假设中心点的坐标为(0,0),那么取距离它最近的8个坐标,为了计算,需要设定。

2024-01-12 15:48:57 1027

原创 OpenCV-21方盒滤波和均值滤波

使用API --- boxFiter(src, ddepth, ksize[,dst[,anchor[, normalize[, borderType]]]])方盒滤波方盒滤波的卷积核如下所示:--- normalize = Ture时, a = 1 / (W*H)滤波器的宽高--- normalize = False时, a = 1 相当于什么都没做一般情况使用normalize = Ture的情况,这时方盒滤波等价于均值滤波。

2024-01-11 03:46:56 723

原创 OpenCV-20卷积操作

图像卷积就是卷积在图像上按照滑动遍历像素时不断的相乘求和的过程。绿色为图片, 黄色为卷积核, 粉色为最终得到的卷积特征。

2024-01-10 20:06:07 799

原创 OpenCV-19图像的仿射变换

放射变换是图像旋转,缩放,平移的总称,具体的做法是通过一个矩阵和原图片坐标进行计算,得到新的坐标,完成变换,所以关键就是这个矩阵。

2024-01-09 15:19:42 918

原创 OpenCV-18图像的翻转和旋转

使用API ---cv2.rotate(img, rotateCode)ROTATE_90_COUNTERCLOCKWISE 90度逆时针。或者使用np的翻转src[: : -1,: : -1]实现上下翻转。使用API---cv.flip(src, flipCode)ROTATE_90_CLOCKWISE 90度顺时针。ROTATE_180 180度顺时针。flipCode < 0上下 + 左右翻转。flipCode = 0表示上下翻转。flipCode > 0表示左右翻转。

2024-01-08 02:29:34 633

原创 OpenCV-17制作LOGO小练习

且无论是and、or、not、xor在OpenCV中与掩码的操作都为与运算。位运算,前面两个图片先做一个与运算,与完之后再与掩码做一个与运算。此时发现得到的tmp与logo进行add运算,即可把logo嵌入。3. 规划一下LOGO希望放在那个位置,在添加的位置变为黑色。在OpenCV位运算中,还存在掩码(mask)操作。4. 利用add方法,将logo和图片叠加在一起。接下来我们计划将LOGO放在小狗图片的左上角。如果结果为True,则显示前面与完结果之后的值。最终我们可以得到一下带LOGO的小狗图片。

2024-01-07 00:47:50 1235

原创 OpenCV-16图像的基本变换

使用API----resize(src, dsize, [,dst,[fx[,fy[,interpolation]]]])src:要缩放的图像。dsize:缩放之后的图像大小,元组和列表表示都可以。dst:可选参数,缩放之后的输出图片。fx,fy:x轴与y轴的缩放比,即宽度与高度的缩放比。interpolation:插值算法,只要包括以下四种:1)INTER_NEAREST, 邻近查找,速度快,效果差2)INTER_LINEAR, 双线性插值,使用原图中的4个点进行插值,为默认的。

2024-01-06 04:18:36 774

原创 OpenCV-15位运算

OpenCV中的逻辑运算就是对应位置的元素进行与、或、非和异或。Opencv与Python不同的是:OpenCV中0的非反过来是255,255反过来是0。但是Python中255非为-256。

2024-01-05 03:03:00 948

原创 OpenCV-14图片的四则运算和图片的融合

通过使用API add来执行图像的加法运算cv2.add(src1, src2)需要再其中传入两张图片。图片就是矩阵,图片的加法运算就是矩阵的加法运算。因此加法运算中要求两张图的shape必须是相同的。首先,我们在网上下载两张小猫和小狗的照片用作练习。通过shape查看两种图片的形状。输出结果如下:在做加法之前需要把图片的形状变得完全一致。可以通过ndarray的切片的方式取出完全一样的形状。但是因为是切片所以狗的图片只有原图像的一部分。

2024-01-04 04:33:53 712

原创 numpy数组05-numpy的索引和切片

上节课我们已经取出了CSV文件中的二维数组,本次对这个二维数组为例,进行练习操作。综合演示代码如下所示,建议大家可以自己动手联系效果会更号好。numpy中可以对其中的某一行(列)进行数据处理。

2024-01-03 22:35:52 490

原创 OpenCV-13绘制多边形和文本

使用API polylines绘制多边形。其中:pts:表示多边形的点集,(需要使用集合来表示,且必须是int32位及以上)isColse:判断是否多边形是否闭合,如果闭合则线段连在一起;不闭合则是断开的。主要注意pts是三维的。

2024-01-02 03:54:02 545

原创 OpenCV-12绘制图像

OpenCV提供了许多绘制图像的API,可以在图像上绘制各种图形,例如直线,矩形,圆,椭圆等图形。

2024-01-01 20:46:00 1217

原创 OpenCV-11颜色通道的分离与合并

其中,蓝色与绿色混合后的颜色类似于青色(即img2显示的颜色)merge((ch1,ch2,ch3))将多个通道进行融合。split(mat)将图像的通道进行分割。本次我们使用两个比较重要的API。

2023-12-31 18:47:17 574 1

原创 numpy数组04-数组的轴和读取数据

在numpy中数组的轴可以理解为方向,使用0,1,2...数字表示。对于一个一维数组,只有一个0轴,对于2维数组(如shape(2,2)),有0轴和1轴,对于一个三维数组(如shape(2,2,3)),有0,1,2轴。对于二维数组:axis = 0表示列;axis = 1表示行。如下图所示:对于三位数组来说:axis = 0表示shape(2,2,3)中的第一个2,可以理解为有几块,几个维度;axis = 1表示列;axis = 2表示行。

2023-12-31 01:48:29 508

原创 numpy数组03-数组的计算

numpy中的数组与数字进行计算是广播形式,数组+-*/数字,则数组中的每一个数字都会进行相应的四则运算。

2023-12-30 04:54:35 695

Python的学习笔记第二节 - Numpy

基于Numpy的学习笔记

2024-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除