随笔分类 - OpenCV-python
1
摘要:关于K聚类,我曾经在一篇博客中提到过,这里简单的做个回顾。 KMeans的步骤以及其他的聚类算法 K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算 其他聚类算法:二分K-均值 讲解一下步骤,其实就是说明一下伪代码 OpenCV中使用cv2.kmeans()对数据进行分类
阅读全文
摘要:一、K近邻 有两个类,红色、蓝色。我将红色点标记为0,蓝色点标记为1。还要创建25个训练数据,把它们分别标记为0或者1。Numpy中随机数产生器可以帮助我们完成这个任务 很有可能你运行的图和我的不一样,因为使用了随机数产生器,每次运行代码都会得到不同的结果。 下面就是KNN算法分类器的初始化,我们要
阅读全文
摘要:一、Harris角点检测 原理: 角点特性:向任何方向移动变换都很大。 Chris_Harris 和 Mike_Stephens 早在 1988 年的文章《A CombinedCorner and Edge Detector》中就已经提出了焦点检测的方法,被称为Harris 角点检测。将窗口向各个方
阅读全文
摘要:任务: 一共要完成两项任务: 1. 在所提供的公路图片上检测出车道线并标记 2. 在所提供的公路视频上检测出车道线并标记 方案: 要检测出当前车道,就是要检测出左右两条车道直线。由于无人车一直保持在当前车道,那么无人车上的相机拍摄视频中,车道线的位置应该基本固定在某一个范围内: 如果我们手动把这部分
阅读全文
摘要:霍夫变换常用来在图像中提取直线和圆等几何形状。如下图: 我们下面来看看如何使用霍夫变换来检测直线。一条直线可以用数学表达式 y = mx + 或者 ρ = xcosθ + y sinθ表示(极坐标) 简单说明一下: ρ 是从原点到直线的垂直距离,θ是直线的垂线与横轴顺时针方向的夹角,如下图所示: 首
阅读全文
摘要:啥叫模板匹配 模板匹配就是在大图中找小图,也就说在一幅图像中寻找另一幅模板图像的位置: OpenCV使用 cv2.matchTemplate() 实现模板匹配。 匹配函数返回的是一幅灰度图,最白的地方表示最大的匹配。使用 cv2.minMaxLoc() 函数可以得到最大匹配值的坐标,以这个点为左上角
阅读全文
摘要:啥叫直方图 直方图简单来说就是图像中每个像素值的个数统计,比如一副灰度图中像素值为0的有多少个,1的有多少个... 在计算直方图之前,先了解几个术语: dims:要计算的通道数,对于灰度图dims=1,普通彩色图dims=3 range:要计算的像素值范围,一般为[0,255] bins:子区段数目
阅读全文
摘要:Canny边缘检测方法被誉为边缘检测的最优方法。 cv2.Canny()进行边缘检测,参数2、参数3表示最低和最高阈值。 Canny边缘检测 具体步骤如下: 1. 使用5x5高斯滤波消除噪声: 边缘检测本身属于锐化操作,对噪声比较敏感,所以需要进行平滑处理。高斯滤波的具体内容参考前篇:OpenCV-
阅读全文
摘要:图像梯度 我们知道一阶导数可以用来求极值。把图片想象成连续函数,因为边缘部分的像素值与旁边的像素明显有区别,所以对图片局部求极值,就可以得到整幅图片的边缘信息。不过图片是二维的离散函数,导数就变成了差分,这个查分就变成了图像梯度。 1. 垂直边缘提取 滤波是应用卷积来实现的,卷积的关键就是卷积核。我
阅读全文
摘要:常用的形态学操作:腐蚀、膨胀、开运算和闭运算 一、什么叫形态学操作 形态学操作就是改变物体的形状,比如腐蚀就是"变瘦",膨胀就是"变胖" 形态学操作一般作用于二值化图,来连接相邻的元素或分离成独立的元素。腐蚀和膨胀是针对图片中的白色部分! 白色的像素为255,黑色的像素值为0 二、腐蚀与膨胀 1.
阅读全文
摘要:一、使用OpenCV训练好的级联分类器来识别图像中的人脸 当然还有很多其他的分类器,例如表情识别,鼻子等,具体可在这里下载: OpenCV分类器 效果如图所示: 二、检测摄像头视频中的人脸 原理和在图片中检测出人脸差不多,都是加载训练好的分类器。 效果不错,就不展示图了(不想展示脸。。。。)
阅读全文
摘要:先解释一个单词 blur:使...模糊不清 滤波与模糊 滤波和模糊都属于卷积,不同的滤波方法之间只是卷积核不同(对线性滤波而言) 低通滤波器是模糊,高通滤波器是锐化 低通滤波器允许低频信号通过,在图像中边缘和噪点都相当于高频部分,所以低通滤波器用于去除噪点、平滑和模糊图像。高通滤波器则反之,用来增强
阅读全文
摘要:一、图片相加 要叠加两张图片,使用cv2.add(),相加两幅图片的形状(高度、宽度、通道数)必须相同。numpy中可以直接用res = img1 + img2相加。但是两者的结果并不相同 如果是二值化图片(只有0和255两种值),两者结果是一样的。 二、图像混合 图像混合cv2.addWeight
阅读全文
摘要:在说Otsu之前,先说几个概念 灰度直方图:将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。其实就是每个值(0~255)的像素点个数统计。 Otsu算法假设这副图片由前景色和背景色组成,通过最大类间方差选取一个阈值,将前景和背景尽可能分开。 一、代码展示 可以看出Otsu阈值明显优于固定
阅读全文
摘要:一、固定阈值分割 cv2.threshold()用来实现阈值分割,有4个参数: 参数1:要处理的原图,一般是灰度图 参数2:设定的阈值 参数3:最大阈值,一般是255 参数4:阈值的方式,主要有5种,详情:ThresholdTypes 理解这5种阈值方式: 固定阈值将整幅图片分成两类值,它并不适用于
阅读全文
摘要:一、颜色空间转换 颜色转换其实是数学运算,如灰度化最常用的是:gray = R* 0.299 + G* 0.587 + B * 0.114 二、视频中特定颜色物体追踪 HSV:色调(H),饱和度(S),明度(V)。对光照的变换并不是很敏感,相比于BGR更易于区分颜色,常用于颜色识别的模型。转换模式用
阅读全文
摘要:一、获取和修改像素点的值 通过行、列坐标获取某个像素点的值,对于彩色图。B、G、R对应0, 1, 2 修改像素也是同样的方式: 更好的像素访问和编辑方法: 二、图片属性 1、图像形状 2、数据类型 3、图像总像素数 二、感兴趣区域(ROI) 行对应y,列对应x,所以其实是img[y, x],所以要注
阅读全文
摘要:一、打开摄像头 cv2.VideoCapture(0)创建VideoCapture对象,参数0表示摄像头编号,如果你有两个摄像头,也可以传入1 二、播放本地视频 和打开摄像头一样,把摄像头编号换成视频的路径就可以播放本地视频。cv2.waitKey的参数0表示无限等待,数值越大,视频播放越慢,反之,
阅读全文
摘要:前面一直都是使用命令行运行代码,不够人性化。这篇用Python编写一个GUI界面,使用PyQt5编写图像处理程序。包括:打开、关闭摄像头,捕获图片,读取本地图片,灰度化和Otsu自动阈值分割的功能。 使用Qt Designer来设计界面。而anaconda里自带了designer.exe,我使用的就
阅读全文
摘要:首先感觉学习OpenCV-python最好的学习工具官方的英文文档。 官方英文教程:OpenCV-Python Tutorials 我使用的是anaconda里的 jupyter notebook。至于如何安装,请自行百度。然后再安装 cv2包 快速、简洁、流行的python 众所周知,python
阅读全文
1

浙公网安备 33010602011771号