OpenCV学习笔记
文章平均质量分 67
分享和记录OpenCV的学习笔记
衍生星球
分享每一次学习,记录每一次成长,希望和大家一起进步。
展开
-
【OpenCV学习笔记】我的OpenCV学习之路
图像平滑从信号处理的角度看就是去除其中的高频信息,保留低频信息。因此我们可以对图像实施低通滤波。低通滤波可以去除图像中的噪声,对图像进行平滑。根据滤波器的不同可分为均值滤波,高斯滤波,中值滤波,双边滤波。1.模板匹配原理:在给定的图片中查找和模板最相似的区域API:利用cv.matchTemplate0进行模板匹配,然后使用cv.minMaxLoc0搜索最匹配的位置。原创 2023-08-17 17:50:08 · 302 阅读 · 0 评论 -
16 -- OpenCV学习—字符画效果
字符画效果1.代码:from PIL import Imageascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')def get_char(r, b, g, alpha=256): if alpha == 0: return ' ' gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)原创 2022-04-23 16:35:19 · 2402 阅读 · 0 评论 -
15 -- OpenCV学习—视频操作
视频读写一、从文件中读取视频并播放 在OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件:1.创建读取视频的对象cap = cv.VideoCapture(filepath)参数:filepath:视频文件路径2.视频的属性信息2.1获取视频的某些属性retval = cap.get(propId)参数:propld:从0到18的数字,每个数字表示视频的属性 常用属性有:flags意义cv2.CAP原创 2022-04-15 13:24:23 · 309 阅读 · 0 评论 -
14 --OpenCV学习—霍夫变换
1.霍夫线检测1.1 API:cv.HoughLines(img, rho, theta, threshold)参数:img:检测的图像,要求是二值化的图像,所以在调用霍夫变换之前首先要进行二值化,或者进行Canny边缘检测rho、theta:精确度threshold:阈值,只有累加器中的值高于该阈值时才被认为是直线。1.2 示例:import numpy as npimport randomimport cv2 as cvimport matplotlib.pyplot as原创 2022-04-14 20:05:55 · 2876 阅读 · 0 评论 -
13 -- OpenCV学习—模板匹配
模板匹配和原创 2022-04-13 13:04:20 · 4084 阅读 · 0 评论 -
12 -- OpenCV学习—边缘检测
1.边缘检测边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显,图像属性中的显著变化通常反映了属性的重要事件和变化。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于搜索和基于零穿越。基于搜索:通过寻找图像一阶导数中的最大值来检测边界,然后利用计算结果估计边缘的局部方向,通常采用梯度的方向,并利用此方向找到局部梯度模的最大值,代表算法是Sobel算子和Scharr原创 2022-04-08 12:27:38 · 1650 阅读 · 0 评论 -
11 -- OpenCV学习—直方图均衡化
直方图均衡化1.原理与应用“直方图均衡化”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在更广泛灰度范围内的分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。这种方法提高图像整体的对比度,特别是有用数据的像素值分布比较接近时,在X光图像中使用广泛,可以提高骨架结构的显示,另外在曝光过度或不足的图像中可以更好的突出细节。使用opencv:进行直方图统计时,使用的是:API:dst = cv.equalizeHist(img)参数:img原创 2022-04-07 14:26:12 · 2357 阅读 · 0 评论 -
10 -- OpenCV学习—掩膜
掩膜的应用掩膜是用选定的图像、图形或物体,对要处理的图像进行遮挡,来控制图像处理的区域。在数字图像处理中,我们通常使用二维矩阵数组进行掩膜。掩膜是由0和1组成一个二进制图像,利用该掩膜图像要处理的图像进行掩膜,其中1值的区域被处理,0值区域被屏蔽,不会处理。掩膜的主要用途是:提取感兴趣区域:用预先制作的感兴趣区掩模与待处理图像进行”与“操作,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。屏蔽作用:用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作原创 2022-04-06 12:33:47 · 2467 阅读 · 0 评论 -
09 --OpenCV学习—直方图
直方图1.灰度直方图直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的bin当中。其中,bin为直方图中经常用到的一个概念,可以译为“直条”或“组距”,其数值是从数据中计算出的特征统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。图像直方图(Image Histogram)是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素个数。这种直方图中,横坐标的左侧为较暗的区域,而右侧为较亮的区域。因此一张较暗图片的直方图中的数据多集中于左侧和中间部分,而整体明亮、只有原创 2022-04-03 23:06:52 · 3218 阅读 · 0 评论 -
08 -- OpenCV学习—图像平滑
图像平滑1.图像噪声由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。1.1椒盐噪声椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素,或是两者皆有。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。1.2高斯噪声高斯噪声是指噪声密原创 2022-04-02 17:39:11 · 3152 阅读 · 0 评论 -
07 -- OpenCV学习—开闭运算
1.开闭运算开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。但这两者并不是可逆的,即先开后闭并不能得到原来的图像。开运算开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。闭运算闭运算与开运算相反,冠先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。API:cv.morphologyEx(img, op, kernel)参数:img:要处理的图像op:处理方式:若进行开运算,则设为cv.MORPH_OP原创 2022-03-31 20:34:02 · 5475 阅读 · 0 评论 -
06 -- OpenCv学习—形态学操作
形态学操作1.连通性在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有3种:4邻接、8邻接和D邻接分别如下图所示:4邻接:像素p(x,y)的4邻域是:(x+1,y);(x-1,y);(x,y+1);(x,y-1),用N4§表示像素p的4邻接。D邻接:像素p(x,y)的D邻域是:对角上的点(x+1,y+1);(x+1,y-1);(x-1,y+1);(x-1,y-1)),用ND§像素ρ的D邻域。8邻接:像素p(x,y)的8邻域是:4邻域的点+D邻域的点,用N8§表示像素p的原创 2022-03-30 18:24:20 · 1648 阅读 · 0 评论 -
05 -- OpenCV学习—图像旋转和变换
1.图像旋转图像旋转是指图像按照某个位置转动一定角度的过程,旋转中图像仍保持这原始尺寸。图像旋转后图像的水平对称轴、垂直对称轴及中心坐标原点都可能会发生变换,因此需要对图像旋转中的坐标进行相应转换。假设图像逆时针旋转θ,则根据坐标转换可得旋转转换为:x′=rcos(α−θ)y′=rsin(α−θ)也可以写成:x′=xcosθ+ysinθy′=−xsinθ+ycosθ在OpenCV中图像旋转首先根据旋转角度和旋转中心获取旋转矩阵,然后根据旋转矩阵进行变换,即可实现任意角度和任意原创 2022-03-28 22:11:54 · 6533 阅读 · 0 评论 -
04 -- OpenCV学习—算数操作
一、算数操作1.图像的加法使用cv.add()函数将两幅图像相加(或者简单通过Numpy操作添加两个图像),两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。区别:cv.add()–>饱和操作Numpy–>模运算2.图像的混合两个图像的权重不同图像混合的计算公式如下:g(x)=(1-α) f0(x)+α f1(x)通过修改α的值(0–>1)实现炫酷的组合图。函数cv.addWeighted()可以按下面的公式进行混合操作:dst= α img1+β原创 2022-03-24 19:21:32 · 3970 阅读 · 0 评论 -
03 -- OpenCv学习—像素点、拆分和合并
1.获取并修改图像中的像素点通过行和列的坐标值获取像素点的像素值BGR图像:返回一个蓝、绿、红的数组。灰度图像:返回相应的强度值。#读取图像img=cv.imread('a.jpg')#获取某个像素点的值...原创 2022-03-18 10:04:42 · 3388 阅读 · 0 评论 -
02 -- OpenCv学习—图像的IO操作
1.图像的IO操作1.1读取图像cv.imread()1:彩色图像 0 :灰度图像 -1:alpha通道图像1.2显示图像cv.imshow()/plt.imshow()参数:显示图像的窗口名称(以字符串表示)要记载的图像注意:要调用**cv.waitKey()**给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。1.3保存图像cv.imwrite()参数:文件名 要保存在哪里 要保存的图像1.4总结import numpy as npimport原创 2022-03-14 13:41:53 · 3457 阅读 · 0 评论 -
01 -- OpenCV学习—OpenCV开发环境
一、OpenCV开发环境1.使用工具PyCharm OpenCV库 IDLE python3.82.OpenCV安装:pip install opencv-pythonpip install opencv-contrib-python3.测试程序:#导入cv模块import cv2 as cv#读取图片img = cv.imread("a.jpg")#显示图片cv.imshow("read_img",img)#等待cv.waitKey(0)#释放内存cv.des原创 2022-01-27 15:39:04 · 4359 阅读 · 4 评论