![](https://img-blog.csdnimg.cn/direct/8aa8d747e0c74a8ba552cc5171a1574d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV
文章平均质量分 52
《深入学习OpenCV》专栏将带领读者深入探索计算机视觉和图像处理领域中的开源库OpenCV。我们将从基础概念开始,逐步深入,探讨OpenCV在图像处理、图像识别、计算机视觉算法等方面的应用和实践。通过理论与实践相结合的方式,帮助读者掌握OpenCV的核心技术,并能够应用于实际项目中。
一道秘制的小菜
记录我的学习日记
展开
-
OpenCV-42 直方图均匀化
直方图均匀化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均匀,提高图像的对比度。达到改善图像主管视觉效果的目的。最初的像素点都在0-7之间,最后我们将其规划到0~255中间。二、直方图均匀化在OpenCV中的运用。原创 2024-02-18 00:07:11 · 825 阅读 · 0 评论 -
OpenCV-41 使用掩膜的直方图
掩膜即为与原图大小一致的黑底白框图。原创 2024-02-17 00:08:12 · 830 阅读 · 0 评论 -
OpenCV-40 绘制直方图
可以利用matplotlib把OpenCV统计得到的直方图绘制出来。原创 2024-02-16 02:52:31 · 582 阅读 · 0 评论 -
OpenCV-39 图像直方图
在统计学中,直方图是一种对数据情况的图形表示,是一种二维统计图表。图像直方图是一种表示数字图像中的直方图, 标绘了图像中每个亮度值得像素数。可以借助观察该直方图了解需要如何调整亮度分布的直方图。这种直方图中,横坐标得左侧为纯黑、较暗的区域,而右侧为较亮,纯白的区域。直方图可以说或者。原创 2024-02-15 00:03:58 · 805 阅读 · 0 评论 -
OpenCV-38 图像金字塔
拉普拉斯金字塔(Laplacian pyramid):用于从金字塔底层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。拉普拉斯金字塔图像类似图像边缘,它的大部分元素都是0, 用于图像压缩。,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列。拉普拉斯金字塔由高斯金字塔构成,没有专门的函数。图像金字塔是图像中多尺度表达的一种,最主要用于。原创 2024-02-14 00:58:00 · 1164 阅读 · 0 评论 -
OpenCV-37 最小外接矩形和最大外接矩形
外接矩形分为和。下图中红色矩形为最小外接矩形,绿色矩形为最大外接矩形。原创 2024-02-13 01:05:17 · 2705 阅读 · 0 评论 -
OpenCV-36 多边形逼近与凸包
findContours后的轮廓信息countours可能过于复杂不平滑,可以用,这就是轮廓的多边形逼近。apporxPolyDP就是以多边形去逼近轮廓,采用的是Douglas-Peucker算法(方法名中的DP)DP算法原理比较简单,核心就是。原创 2024-02-12 01:28:40 · 1937 阅读 · 0 评论 -
OpenCV-35 查找轮廓
图像轮廓是具有的连续点的曲线,轮廓在形状分析和物体的检测识别中很有用。原创 2024-02-11 05:20:58 · 1417 阅读 · 0 评论 -
OpenCV-34 顶帽操作和黑帽操作
顶帽 = 原图 - 开运算开运算的效果是去除图像外的噪点,因此。通过API --- morphologyEx(img,, kernel)输出结果如下:可以看出通过顶帽操作只留下了图像的噪声点。原创 2024-02-10 04:17:09 · 336 阅读 · 0 评论 -
OpenCV-33 开运算和闭运算
开运算和闭运算都是腐蚀和膨胀的基本应用。原创 2024-02-09 00:02:43 · 748 阅读 · 0 评论 -
OpenCV-32 膨胀操作
使用API---dilate(img, kernel, iterationms = 1)膨胀是与腐蚀相反的操作,基本原理是只要保证。,周边无论是0还是非0值,都变为0。原创 2024-02-08 00:08:14 · 1050 阅读 · 0 评论 -
OpenCV-31 获得形态学卷积核
通过下面API---getStructuringElement(shape,ksize,[, anchor])OpenCV提供了获取卷积核的API,不需要我们手动创建卷积核。下面输出不同形状的卷积核(都为6*6)原创 2024-02-07 00:04:19 · 1139 阅读 · 0 评论 -
OpenCV-30 腐蚀操作
腐蚀操作也是用卷积核扫描图像,只不过,如果卷积核内所有像素点都是白色,那么即为白色。大部分时候腐蚀操作使用的都是全为1的卷积核。原创 2024-02-06 04:40:07 · 1565 阅读 · 0 评论 -
OpenCV-29 自适应阈值二值化
在前面的部分我们使用的是全局阈值,。当时这种方法并不适应于所有情况。尤其是当。这种情况下我们需要采用自适应阈值。此时的阈值时根据图像上的每一个小区域计算与其对应的阈值。因此在,从而使我们能在亮度不同的情况下得到更好的结果。原创 2024-01-29 00:15:00 · 474 阅读 · 0 评论 -
OpenCV-28 全局二值化
什么是形态学?1)指一系列处理图像的图像处理技术2)形态学的基本思想是利用一直)来测量或提取输入图像中相应的,以便进一步进行图像分析和目标识别。3)这些处理方法基本是对二进制图像进行处理,即黑白图像。4)卷积核决定图像处理后的效果。原创 2024-01-28 05:09:48 · 559 阅读 · 0 评论 -
OpenCV-27 Canny边缘检测
Canny边缘检测算法是John F.Canny与1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的:表示出尽可能多的实际边缘,同时尽可能的减小噪声产生的误报。:标识出的边缘要与图像中的实际边缘尽可能接近。:图像中的边缘只能标识一次。Canny边缘检测的一般步骤:1)去噪。边缘检测容易受到噪声干扰,在进行边缘检测前通常需要先进行去噪,一般用去除噪声。2)计算梯度:对平为了方便一般可以改用绝对值。——计算出梯度——计算出角度,从而得到方向。原创 2024-01-27 19:26:27 · 705 阅读 · 0 评论 -
OpenCV-26 拉普拉斯算子
索贝尔算子是模拟一阶导数,一阶导数越大的地方说明变化越剧烈,越有可能是边缘。但是如果我们对f(t)求二阶导数呢?可以发现边缘处的二阶导数 = 0,因此,我们可以利用这一特性去寻找图像的边缘,但是,以拉普拉斯算子推导过程这样就得到了拉普拉斯算子的卷积核,即卷积模板。原创 2024-01-25 04:19:19 · 631 阅读 · 0 评论 -
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 · 715 阅读 · 0 评论 -
OpenCV-24双边滤波
而高斯滤波只用了位置信息。对于高斯滤波,仅用空间距离的权值系数与图像卷积后,确定中心点的灰度值。即认为离中心点越近的点,其权重系数越大。双边滤波加入了对灰度信息的权重,即在邻域内,原创 2024-01-14 01:18:37 · 1002 阅读 · 0 评论 -
OpenCV-23中值滤波
中值滤波原理比较简单,假设有一个数组[1556789],取其中的中间值(即中位数)作为卷积后的结果即可,中值滤波对胡椒噪音(也叫椒盐噪音)效果明显。对下面带胡椒噪声的图片进行处理。原创 2024-01-13 01:09:39 · 696 阅读 · 0 评论 -
OpenCV-22高斯滤波
要理解高斯滤波首先要直到什么是高斯函数,高斯函数是符合高斯分布的(也叫正态分布)的数据的概率密度函数。高斯函数的特点是以x轴某一点(这一点称为均值)为对称轴,越靠近中心数据发生的概率越高,最终形成一个两边平缓,中间陡峭的钟型(有的地方也叫帽子)图形。高斯函数的一般形式:以(0,0)和(0,0,0)为中点:高斯滤波就是使用符合高斯分布的卷积核对图片进行卷积操作,所以高斯滤波的重点是如何计算符合高斯分布的卷积核,即高斯模板:假设中心点的坐标为(0,0),那么取距离它最近的8个坐标,为了计算,需要设定。原创 2024-01-12 15:48:57 · 1280 阅读 · 0 评论 -
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 · 766 阅读 · 0 评论 -
OpenCV-20卷积操作
图像卷积就是卷积在图像上按照滑动遍历像素时不断的相乘求和的过程。绿色为图片, 黄色为卷积核, 粉色为最终得到的卷积特征。原创 2024-01-10 20:06:07 · 841 阅读 · 0 评论 -
OpenCV-19图像的仿射变换
放射变换是图像旋转,缩放,平移的总称,具体的做法是通过一个矩阵和原图片坐标进行计算,得到新的坐标,完成变换,所以关键就是这个矩阵。原创 2024-01-09 15:19:42 · 1057 阅读 · 0 评论 -
Opencv-1创建和显示窗口
第一节课从创建窗口和展示窗口开始。原创 2023-12-10 02:27:06 · 416 阅读 · 1 评论 -
Opencv-2.1显示图像(matplotlib)
第二节课第一部分matplotlib显示图像。原创 2023-12-10 04:59:39 · 355 阅读 · 1 评论 -
OpenCV-2.2显示图像(cv.2)
第二节课第二部分cv2显示图像,代码中有详细的注释,方便学习和复习。原创 2023-12-10 05:03:19 · 464 阅读 · 1 评论 -
OpenCV-3保存图像
本节课进行图片的保存import cv2cv2.namedWindow("xiaoyang", cv2.WINDOW_NORMAL) # 创建窗口cv2.resizeWindow("xiaoyang", 400, 800) # 设置窗口大小yang = cv2.imread("xiaoyang.jpeg", 1) # 读取图片,并返回到一个对象while True: cv2.imshow("xiaoyang", yang) # 展示窗口的名字和对象原创 2023-12-10 19:01:35 · 402 阅读 · 1 评论 -
OpenCV-4读取摄像头
本节课进行摄像头内容读取,详细注解在代码中。原创 2023-12-10 19:03:52 · 575 阅读 · 1 评论 -
OpenCV-5录制视频
需要记住cv2.VideoWriter_fourcc函数已被废弃,取而代之的是cv2.VideoWriter.fourcc属性。# VideoWriter:参数1为输出对象,参数2为多媒体参数文件格式(VideoWriter.fourcc)# 参数3为帧率(例如20为一秒钟20张图片),参数4为分辨率(一般为640*480)# 视频录制:通过Opencv打开摄像头或者视频,捕获的每一帧存到视频里面。# release缓存内容写入磁盘。# write编码并写入缓存。原创 2023-12-12 03:55:57 · 420 阅读 · 0 评论 -
OpenCV-6控制鼠标
flags主要用于组合键, userdata是上面setMouseCallback的userdata-给回调函数的参数。# callback(event, x, y, flags, userdata)回调参数必须包括这5个参数。# winname为窗口名字, callback为回调函数, userdata是给回调函数的参数。# 回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在被调用函数执行完毕后被调用。# 其中,event是鼠标事件(鼠标移动,左键,右键), x,y是点鼠标的坐标点。原创 2023-12-13 03:34:00 · 526 阅读 · 1 评论 -
OpenCV-7Trackbar用法
Trackbar是一个可以允许进行拖动的进条,可以通过鼠标控制其对应的值(例如下图三原色)可以用来控制三原色,但不仅仅用来控制三原色。原创 2023-12-14 03:39:50 · 733 阅读 · 1 评论 -
OpenCV-8RGB和BGR颜色空间
最常见的色彩空间就是RGB,人眼也是基于RGB的色彩空间去分辨颜色。OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。原创 2023-12-15 21:54:25 · 670 阅读 · 0 评论 -
OpenCV-9颜色空间的转换
2.颜色空间中的参数,例如cv2.COLOR_BGR2RGBA实际上是数值。1.Opencv的默认读取行为BGR,因此图片颜色空间转换都是从BGR开始转换。颜色转换API:cvtColor(img,colorsapce)3.callback回调函数中至少要有一个参数,即使没有用到。cvt含义为转换 convesion(转换)例如打印 cv2.COLOR_BGR2HSV。原创 2023-12-21 02:43:06 · 806 阅读 · 0 评论 -
OpenCV-10mat的深浅拷贝
mat是OpenCV是在C++语言用来表达图像数据的一种数据结构,在Python转换为numpy的ndarray.mat是由header和date组成,header中记录了图片的维数、大小、数据类型等信息.例如:cv2.imshow(winname, mat)第一个参数为窗口名,第二个参数为mat,也就是图片,类型为ndarray因此直接打印图片格式也为ndarray.Opencv用mat这种结构来表示图片的。原创 2023-12-22 04:26:24 · 917 阅读 · 0 评论 -
OpenCV-11颜色通道的分离与合并
其中,蓝色与绿色混合后的颜色类似于青色(即img2显示的颜色)merge((ch1,ch2,ch3))将多个通道进行融合。split(mat)将图像的通道进行分割。本次我们使用两个比较重要的API。原创 2023-12-31 18:47:17 · 588 阅读 · 1 评论 -
OpenCV-12绘制图像
OpenCV提供了许多绘制图像的API,可以在图像上绘制各种图形,例如直线,矩形,圆,椭圆等图形。原创 2024-01-01 20:46:00 · 1289 阅读 · 0 评论 -
OpenCV-13绘制多边形和文本
使用API polylines绘制多边形。其中:pts:表示多边形的点集,(需要使用集合来表示,且必须是int32位及以上)isColse:判断是否多边形是否闭合,如果闭合则线段连在一起;不闭合则是断开的。主要注意pts是三维的。原创 2024-01-02 03:54:02 · 741 阅读 · 0 评论 -
OpenCV-14图片的四则运算和图片的融合
通过使用API add来执行图像的加法运算cv2.add(src1, src2)需要再其中传入两张图片。图片就是矩阵,图片的加法运算就是矩阵的加法运算。因此加法运算中要求两张图的shape必须是相同的。首先,我们在网上下载两张小猫和小狗的照片用作练习。通过shape查看两种图片的形状。输出结果如下:在做加法之前需要把图片的形状变得完全一致。可以通过ndarray的切片的方式取出完全一样的形状。但是因为是切片所以狗的图片只有原图像的一部分。原创 2024-01-04 04:33:53 · 750 阅读 · 0 评论 -
OpenCV-15位运算
OpenCV中的逻辑运算就是对应位置的元素进行与、或、非和异或。Opencv与Python不同的是:OpenCV中0的非反过来是255,255反过来是0。但是Python中255非为-256。原创 2024-01-05 03:03:00 · 960 阅读 · 0 评论