OpenCV3
文章平均质量分 89
OpenCV学习
不断进步的咸鱼
秃头女孩,不服输!
展开
-
【OpenCV-系列2】10 轮廓检测
文章目录1 轮廓检测2 轮廓绘制3 代码实验 边缘检测之后得到二值图像,二值图像里面,边缘被标记为白色,非边缘部分被标记为黑色。要确定那个边缘是哪个物体的(哪些边缘是连通的)就需要用到轮廓提取。1 轮廓检测 原理: 利用边缘是否连通,判断是否是同一物体的边缘,然后进行分组。 API: contours,hierarchy=cv2.findContours(image, mode, method, offset=None) 参数: image:8进制单通道图像,通常为二进制图像原创 2021-11-03 19:07:59 · 544 阅读 · 0 评论 -
【OpenCV-系列2】 12 视频操作
文章目录1 视频读取与播放2 视频保存3 视频追踪3.1 meanshift3.1.1 原理 学习目标: 掌握读取视频文件,显示视频,保存视频文件的方法1 视频读取与播放 在OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你呀读取的视频文件: (1)创建读取视频的对象 cap=cv2.VideoCapture(filepath) 参数: filepath:视频文件路径 (2)视频的属性信息 2.1 获取视频的某些属性信息 retva原创 2021-10-31 22:44:45 · 310 阅读 · 0 评论 -
【OpenCV-系列2】11 角点及角点检测
文章目录1 图像的特征(角点特征)2 角点检测2.1 Harris角点检测2.1.1 原理 学习目标: 理解图像的特征 知道图像的角点1 图像的特征(角点特征) AB的特征是平面:在图像中很难找到具体位置 CD的特征是边缘:在图像中同样很难找具体的位置 EF的特征是角点:很容易被找到 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用,角点在三维场景重建、运动估计,目标跟踪,目标识别,图像配准与匹配等计算机视觉领域起着非常重要的作用。2 角点检测 学习目标:原创 2021-10-18 21:46:17 · 1780 阅读 · 0 评论 -
【OpenCV-系列2】09 模板匹配及霍夫变换
文章目录1 模板匹配1.1 原理1.2 实现2 霍夫变换2.1 原理 学习目标: 掌握模板匹配的原理,能完成魔板匹配的应用 理解霍夫线变换的原理,了解霍夫圆检测 知道OpenCV如何进行线和圆的检测1 模板匹配1.1 原理 定义: 在给定的图片中,查找和模板最相似的区域,该算法的输入包括模板和图片,整个任务的思路就是按照滑动窗口的思路不断移动模板图片,计算与图像中对应区域的匹配度,最终将匹配度最高的区域选择为最终的结果。 实现流程: (1)准备两张图像:一张原始图像,一张模板原创 2021-10-17 19:11:02 · 521 阅读 · 0 评论 -
【OpenCV-系列2】08 边缘检测
文章目录1 边缘检测原理2 Sobel算子和Scharr算子2.1 Sobel算子2.2 Scharr算子3 Laplacian算子4 canny算子 学习目标: 了解Sobel算子,Scharr算子和拉普拉斯算子 掌握canny边缘检测的原理及应用1 边缘检测原理 定义: 标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反应了属性的重要事件和变化,边缘的表现形式如下图所示: 作用: 图像边缘检测大幅度减少数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。原创 2021-10-16 18:14:32 · 959 阅读 · 0 评论 -
【OpenCV-系列2】07 直方图
文章目录1灰度直方图 学习目标: 掌握图像的直方图计算和显了解掩膜的应用 熟悉直方图均衡化,了解自适应均衡化1灰度直方图 ...原创 2021-10-16 13:48:36 · 211 阅读 · 0 评论 -
【OpenCV-系列2】06 图像平滑/去噪
文章目录1 图像噪声1.1 椒盐噪声1.2 高斯噪声2 图像平滑2.1 均值滤波2.2 高斯滤波2.3 中值滤波 学习目标: 了解图像中的噪声类型 了解均值滤波、高斯滤波、中值滤波等内容 能够使用滤波器进行图像处理1 图像噪声 由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理,常见的噪声有高斯噪声、椒盐噪声等。1.1 椒盐噪声 椒盐噪声:也称为脉冲噪声,是图像处理中常见的一种噪声,它是一种随机出现的白点或黑点。1.2 高斯噪声 高斯原创 2021-10-13 13:05:39 · 2413 阅读 · 0 评论 -
【OpenCV-系列2】05 形态学操作
形态学操作1 连通性1.1 邻接关系1.2 连通性2 形态学操作2.1 腐蚀和膨胀2.2 开、闭运算2.3 礼帽和黑帽 目标: 理解图像的邻域,连通性 了解不同的形态学操作:腐蚀、膨胀、开闭运算,礼帽和黑帽等,以及不同操作之间的关系。1 连通性1.1 邻接关系 在图像中,最小的单位是像素,每个像素周围有8个临接相思树,常见的邻接关系有3种:4邻域、8邻域、D邻域。1.2 连通性 定义: 是描述区域和边界的重要概念,两个像素连通的两个必要条件是:1)两个像素位置是否相邻;2)两个原创 2021-10-12 21:49:12 · 297 阅读 · 0 评论 -
【OpenCV-系列2】04 几何变换
几何变换1 图像缩放2 图像平移 学习目标: 掌握图像的缩放、平移、旋转 了解数字图像的仿射变换和投射变换1 图像缩放 定义: 就是对图像的大小进行调整,即使图像放大或缩小 API: cv2.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR) 参数: src:输入图像 dsize:绝对尺寸,直接指定调整后图像的大小 fx,fy:相对尺寸,将dsize设置为None,然后将fx,fy设置为比例因原创 2021-10-11 15:35:55 · 189 阅读 · 0 评论 -
【OpenCV-系列2】03 图像算数操作(代数操作)
1 图像的加法 可以使用OpenCV的 cv.add(img1,img2) 函数把两幅图像相加,或者可以通过numpy操作添加两个图像,如res=img1+img2. 注意: OpenCV加法和numpy加法之间存在差异。OpenCV的加法操作是饱和操作,而numpy添加的是模运算。import cv2import matplotlib.pyplot as pltimport numpy as npx=np.uint8([250])y=np.uint8([10])print(cv2.ad原创 2021-10-10 12:39:33 · 167 阅读 · 0 评论 -
【OpenCV-系列2】02 图像基本操作(点操作)
文章目录1 图像的IO操作1.1 读取图像1.2 显示图像1.3 保存图像2 绘制几何图形2.1 绘制直线2.2 绘制圆形2.3 绘制矩形2.4 向图像中添加文字3 获取并修改图像中的像素点4 获取图像属性5 图像通道的拆分与合并6 色彩空间的改变 目标掌握图像的读取和保存方法 访问图像的像素 在图像上绘制集合图像 获取图像属性,并实现通道的合并、分离 颜色空间变换1 图像的IO操作1.1 读取图像 API: cv.imread() 参数: (1)图片路径 (原创 2021-10-09 22:22:02 · 862 阅读 · 0 评论 -
【OpenCV-系列2】01OpenCV简介
文章目录1 主要内容2 图像处理简介2.1 图像是什么2.2 模拟图像和数字图像2.3 数字图像的表示2.3.1 位数2.3.2 图像分类3 OpenCV简介4 OpenCV的模块1 主要内容 OpenCV是应用钢钒的开源图像处理库,本课程介绍相关图像处理方法: 几何变换,形态学变换,图像平滑,直方图操作,魔板匹配,霍夫变换;特征提取和描述方法: 理解角点特征,Harris和Shi-Tomas算法,SIFT/SURF算法,Fast算法,ORB算法;OpenCV在视频操作中的应用。2 图像处理简介2原创 2021-10-09 19:45:06 · 509 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——图像分析(3)
Hough变换一、Hough线变换二、Hough圆变换一、Hough线变换二、Hough圆变换原创 2020-08-20 13:16:57 · 347 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——图像分析(2)
积分图&边缘检测一、积分图一、积分图原创 2020-08-12 13:25:53 · 743 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——图像分析(1)
离散傅里叶变换一、离散傅里叶变换cv2.dft()二、离散傅里叶逆变换cv2.idft() opencv常见的图像变换: 本质上是从输入图像到输出图像的映射,既输出仍然是一副图像。 本章将图像转换为完全不同的表现方: 新的表现方式仍然是一些数组,只是这些数组中的值在含义上将与原图像中的强度值大不相同,比如离散傅里叶变换,它的输出图像仍然是数组,只不过是输入图像的频域表示。 对于任意以离散参数为索引的数值集合,都可以通过与连续傅里叶变换相似的方法来定义离散傅里叶变换(DFT)。一般项数为N的变换预原创 2020-08-11 13:27:48 · 1970 阅读 · 0 评论 -
【OpenCV】OpenCV傅里叶变换基础知识
https://zhuanlan.zhihu.com/p/19763358一、基础概念1.1 频谱(频域图像) 频域图像又称频谱。时域到频域的变换,从侧面可以看到频谱,这个频谱并没有包含时域中全部的信息,只代表每一个对应的正弦波的振幅。1.2 相位谱 时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波A.sin(wt+θ)中,振幅,频率,相位缺一不可,不同相位决定了波的位置,所原创 2020-08-10 15:14:34 · 997 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——常见的图像变换(2)
文章目录一、通用变换1.1 极坐标映射1.2 LogPlolar1.3 任意映射二、图像修复2.1图像修复2.2 去噪三、直方图均衡化一、通用变换1.1 极坐标映射1.2 LogPlolar1.3 任意映射二、图像修复2.1图像修复2.2 去噪三、直方图均衡化...原创 2020-08-06 14:27:25 · 3426 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——常见的图像变换(1)
拉伸、收缩、扭曲和旋转一、 均匀调整cv2.resize二、 图像金字塔2.1 高斯金字塔2.1.1 下采样cv2.pyrDown()2.1.2 高斯金字塔2.2 拉普拉斯金字塔2.2.1 上采样cv2.pyrUp()2.2.2 拉普拉斯金字塔三、不均匀映射3.1 仿射变换3.1.1 概念 我们遇到的简单的图像变换是调整图像的大小,使其变大或变小。这些操作比你想象的稍微复杂,因为调整也带来了像素如何差值(放大)或合并(减少)的问题。一、 均匀调整cv2.resize 我们经常会遇到一些尺寸的图像,原创 2020-08-04 14:40:12 · 1362 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——滤波与卷积(2)
文章目录一、导数和梯度1.1 索贝尔算子cv2.Sobel()1.2 Scharr算子cv2.Scharr()1.2 拉普拉斯算子cv2.Laplacian()二、图像形态学2.1 腐蚀和膨胀2.1.1 腐蚀cv.erode()2.1.2 膨胀cv2.dilate()2.2 通用形态学函数cv2.morphologyEx()2.2.1 开操作cv2.MORPH_OPEN2.2.2 闭开操作cv2.MORPH_CLOSE2.2.3 形态学梯度cv2.MORPH_GRADIENT2.2.3 顶帽(cv2.MOR原创 2020-08-02 13:32:31 · 680 阅读 · 0 评论 -
【OpenCV】学习OpenCV3——滤波与卷积(1)
文章目录一、边界填充1.1 为什么要边界填充1.2 边界填充cv2.copyMakeBorder()1.3 边界填充cv2.borderInterpolate()二、阈值化2.1 固定阈值cv2.threshold()2.2 自适应阈值cv2.adaptiveThreshold()二、平滑2.1 简单模糊cv.blur()一、边界填充1.1 为什么要边界填充 使用opencv进行图像处理,常常会面临对边界的处理问题,例opencv中常用的滤波操作cv.blur、cv.erode、cv.dilate等原创 2020-08-02 10:42:40 · 610 阅读 · 0 评论 -
【OpenCV】3h精通OpenCV
这里写目录标题一、读取图片和网络摄像头1.1 图片读取1.2 视频读取1.1.1 读取视频文件1.1.2 读取网络摄像头二、OpenCV基础功能三、调整、裁剪图像3.1 调整图像大小3.2 裁剪图像四、在图像上绘制形状和文本4.1 图像上绘制形状4.2 图像上绘制文本五、透视变换六、图像拼接七、颜色检测八、轮廓、形状检测九、人脸检测十、实战10.1 虚拟绘画10.2 纸张扫描10.3 车牌检测器一、读取图片和网络摄像头1.1 图片读取import cv2 #读取图像,参数为图像路径img=cv2原创 2020-07-31 13:20:02 · 1866 阅读 · 1 评论 -
【OpenCV】分水岭算法及实战
一、概念 分水岭算法:基于距离变换 二、实战import cv2 as cvimport numpy as np"""分水岭算法原理: 任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是 山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水 汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝知 道所有的山峰都被水淹没。我们构建好的堤坝原创 2020-07-28 10:51:24 · 506 阅读 · 0 评论 -
【OpenCV】其他形态学操作
文章目录一、其他形态学操作1.1 顶帽1.2 黑帽1.3形态学梯度二、实战2.1 顶帽2.2 黑帽2.3 梯度2.3.1 基本梯度 (腐蚀-膨胀)2.3.2 内梯度、外梯度一、其他形态学操作1.1 顶帽 顶帽:原图与开操作之间的差值图像 1.2 黑帽 顶帽:原图与开操作之间的差值图像 1.3形态学梯度 基本梯度: 基本梯度是用膨胀后的图像减去腐蚀后的图像得到差值图像,称为梯度图像也是opencv中支持的计算形态学梯度方法,而此方法得到的梯度又被称为原创 2020-07-28 09:59:31 · 310 阅读 · 0 评论 -
【OpenCV】开、闭操作及实战
一、概念1.1 开操作 开操作:是形态学的重要操作之一,是膨胀与腐蚀操作的组合。主要是应用于二值图像分析中,灰度图像亦可。 开操作=腐蚀+膨胀。 作用: 用来消除图片中的小干扰区域。1.2 闭操作 闭操作:是形态学的重要操作之一,是膨胀与腐蚀操作的组合。主要是应用于二值图像分析中,灰度图像亦可。 闭操作=膨胀+腐蚀。 作用: 填充闭合区域二、实战import cv2 as cvimport numpy as npfrom matplotlib import pyp原创 2020-07-27 12:35:58 · 1095 阅读 · 0 评论 -
【OpenCV】腐蚀、膨胀及实战
这里写目录标题一、简介1.1 膨胀1.2 腐蚀二、实践2.1 灰度图2.2 彩色图一、简介 腐蚀与膨胀是形态学两个基本操作 图像形态学: 是图像处理学科的一个独立分支。主要用来处理灰度和二值图像。,也可用来处理彩色图像 形态学操作的基础: 1.1 膨胀 前提: 结构元素/模板,通常3×3大小。(膨胀和腐蚀,都支持任意形状的结构元素/模板) 膨胀:用结构元素/模板在图像中滑动,结构元素/模板覆盖的图像块中最大像素值替换图像块的中间原创 2020-07-27 12:09:06 · 803 阅读 · 0 评论 -
【OpenCV】对象测量
弧长和面积: 轮廓发现后,计算每个轮廓的弧长和面积。 多边形拟合: 获取轮廓的多边形拟合结果。approxPolyDP(contour,epslion:越小折线越接近真实形状,close:是否为闭合区域) 几何矩计算: import cv2 as cvimport numpy as npclass ShapeAnalysis: def __init__(self): self.shapes = {'triangle': 0, 're原创 2020-07-27 11:19:45 · 177 阅读 · 0 评论 -
【OpenCV】轮廓提取——findContours、drawContours
文章目录一、简介一、简介 轮廓发现:是基于图像边缘提取的基础上寻找对象轮廓的方法。原创 2020-07-27 09:58:37 · 1154 阅读 · 0 评论 -
【OpenCV】(霍夫)直线、圆检测
文章目录一、直线检测二、实战2.1 手动cv.HoughLines2.2 调用API(推荐)cv.HoughLinesP一、直线检测 霍夫直线变换:用来做直线检测;前提条件-边缘检测已经完成;平面空间到极坐标空间转换。 不知道图像(边缘检测后的图像)中有没有直线,那么就将边缘检测后的图像由平面坐标转到极坐标表示,找到极坐标下亮的点,然后将这些点再反向映射到平米空间就可得到直线。完成霍夫直线检测二、实战2.1 手动cv.HoughLinesi原创 2020-07-26 10:46:50 · 519 阅读 · 1 评论 -
【OpenCV】canny边缘提取算法
一、canny算法介绍 canny是边缘检测算法,在1986年提出。是一个很好的边缘检测器,也是常用的图像处理方法。 canny算法步骤: 1.高斯模糊:通过高斯模糊去掉噪声,因为canny是最噪声敏感的算法:GaussianBlur 2.灰度转换:cvtColor 3.计算梯度:Soble/Scharr 4.非最大信号压制:梯度——角度——根据角度将值量化 5.双阈值处理(高低阈值连接):输出二值图像 T1/T2为阈值,凡是高于T2的都保留,凡是小于T1的都抛弃,对于T1原创 2020-07-26 09:57:35 · 897 阅读 · 0 评论 -
【OpenCV】图像梯度及算子
文章目录一、图像梯度概念1.1 一阶导数与soble算子1.2 二阶导数与拉普拉斯算子二、实践2.1 一阶导数2.1.1 soble算子cv.Sobel2.1.2 scharr算子cv.Scharr2.2 二阶导数2.2.1 API计算2.2.2 自定义一、图像梯度概念 图像像素之间相减,得到的差值组成的图像就是图像的梯度图像。注意算子内元素和为11.1 一阶导数与soble算子 通过一阶导数可以提取图像边缘,图像边缘地方,像素差异大,一阶导数也大。 (左)原图,中(原图的像素变化原创 2020-07-25 12:14:37 · 1953 阅读 · 0 评论 -
【OpenCV】图像金字塔(高斯&拉普拉斯)
一、高斯金字塔&拉普拉斯金字塔概念1.1 高斯金字塔 高斯金字塔两个操作reduce&expand: (1)reduce=高斯模糊+降采样(例直接取偶数行) (2)expand=扩大(上采样)+卷积1.2 拉普拉斯金字塔 例:左为高斯金字塔,右为拉普拉斯金字塔。L1为拉普拉斯金字塔的某层,L1=g1-expand(g2)。 通过高斯金字塔可以得到拉普拉斯金字塔。Ln=gn-expand(gn-1) ...原创 2020-07-25 10:39:41 · 440 阅读 · 0 评论 -
【OpenCV】模板匹配、图像二值化
文章目录一、模板匹配1.1 概念1.2 实战cv.matchTemplate二、图像二值化2.1 概念2.2 实战2.2.1 全局阈值cv.threshold2.2.2 局部(自适应)阈值cv.adaptiveThreshold2.2.3 自定义阈值cv.threshold三、超大图像二值化一、模板匹配1.1 概念 **模板匹配:**就是在整个图像区域发现与给与子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给与的子图像),另外还需要一个待检测图像-原图像s。 工作方法: 在待检测图原创 2020-07-24 12:03:09 · 1588 阅读 · 0 评论 -
【OpenCV】图像直方图及操作
一、图像像素值直方图1.1 图像import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef plot_demo(image): '''统计每个像素值在图片中出现的次数''' plt.hist(image.ravel(),256,[0,256])#参数:bin是256,范围【0,256】 plt.show() src=cv.imread(r'D:\Project\Opencv\L原创 2020-07-23 13:18:52 · 442 阅读 · 0 评论 -
【OpenCV】EPF边缘保留滤波
文章目录一、边缘保留滤波介绍二、边缘保留滤波方法2.1 高斯双边(滤波)cv.bilateralFilter2.2 均值迁移(滤波)cv.pyrMeanShiftFiltering一、边缘保留滤波介绍 高斯模糊: 基于权重,权重只考虑像素空间的分布,中间的权重大,边缘的权重小。没有考虑像素值之间的差异问题,如果像素值之间的差异很大,应该不参与计算。 边缘保留滤波: 像素之间的差异很大,说明是显著特征,如果直接平滑(滤波),显著特征会消失。像素之间差异大的地方通常是边缘,所以边缘保留滤波处理后的图片原创 2020-07-23 10:28:57 · 513 阅读 · 0 评论 -
【OpenCV】高斯模糊(基于权重的均值模糊)
文章目录1.引言2.高斯模糊2.1 高斯分布2.2 高斯模糊cv.GaussianBlur1.引言 上一节讲述了均值模糊、中值模糊、自定义模糊。 均值模糊有两种方式:基于平均值(均值模糊)、基于权重(高斯模糊) 高斯模糊去噪效果比均值模糊更好。2.高斯模糊2.1 高斯分布 上图将高斯滤波,拆分为两个一维的滤波,加快计算。2.2 高斯模糊cv.GaussianBlurimport cv2 as cvimport numpy as npdef cla原创 2020-07-22 11:57:23 · 541 阅读 · 0 评论 -
【OpenCV】(均值、中值、自定义)模糊操作
文章目录1.模糊操作概念2.均值、中值、自定义模糊2.1 均值模糊cv.blur2.2 中值模糊cv.medianBlur2.3 自定义模糊cv.filter2D1.模糊操作概念 模糊操作分类: 1.均值模糊 2.中值模糊 3.自定义模糊 模糊操作基本原理: 1.模糊原理:离散卷积 2.定义好每个卷积核,不同卷积核达到不同的卷积效果 3.迷糊是卷积的一种表象 卷积原理: 2.均值、中值、自定义模糊2.1 均值模糊cv.blur 对随机噪声有很原创 2020-07-22 11:20:05 · 613 阅读 · 0 评论 -
【OpenCV】ROI、泛洪填充
ROI原创 2020-07-22 10:30:14 · 299 阅读 · 0 评论 -
【OpenCV】像素的运算
文章目录1.算数运算2.逻辑运算3.调整亮度和对比度 像素运算要求两个图像的大小一致,类型也要一致。1.算数运算 加、减、乘、除 应用:调节亮度和对比度import cv2 as cv'''黑色:0 白色:255(1)加法运算: 注意如果相加的像素值大于255则截断为255 dst=cv.add(img1,img2) (2)减法运算: dst=cv.subtract(m1,m2) (3)乘法运算 dst=cv.multiply(m1原创 2020-07-10 20:49:50 · 609 阅读 · 0 评论 -
【OpenCV】色彩空间介绍
1.什么是色彩空间 纯白色:(255,255,255);纯黑色:(0,0,0)2.常见色彩空间 (1) RGB: 最常用 (2) HSV: H:0-180 S:0-255 V:0-255 (3)HIS(强度、饱和度)、 (4)YCrCb(皮肤检测方面用的较多)、 (5)YUV:安卓开发常用 (6)HCV色彩空间3.OpenCV色彩空间转换APIimport cv2 as cv'''色彩空间的转换'''def color_space_demo(原创 2020-07-10 18:30:26 · 1208 阅读 · 0 评论 -
【OpenCV】利用numpy进行图像像素点操作
跟着贾志刚老师学习OpenCV 通过OpenCV的imread函数读取的图片,格式变为ndarry数组类型,因此可以通过遍历数组的方式,遍历、修改 图片的每个像素点的值。import cv2 as cvimport numpy as npdef access_pixels(image): '''图片属性读取''' print(image.shape)#图像的形状 #(750, 500, 3) height=image.shape[0]#图像高 wi原创 2020-07-07 16:35:24 · 1528 阅读 · 0 评论