![](https://img-blog.csdnimg.cn/20190829085817662.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
—OpenCV
YukinoSiro
有缘再见。
展开
-
OpenCV-Python——第33章:光流
翻译自:https://docs.opencv.org/master/d7/d8b/tutorial_py_lucas_kanade.html程序中的视频素材在此下载链接: https://pan.baidu.com/s/1DIkyYTq7lE3Wou17oHZDnw提取码: jk4j目录1 光流2Lucas-Kanade 法3 OpenCV 中的 Lucas-Kana...原创 2019-04-20 15:13:20 · 2926 阅读 · 1 评论 -
OpenCV-Python——第26章:SIFT特征点提取算法
注意:这章以后的算法不包含在opencv-python中,需要卸载opencv-python,安装opencv-contrib-python的3.4.2.16版本,过程如下:pip uninstall opencv-pythonpip install opencv-contrib-python==3.4.2.16目录简介SIFT算法特点与步骤Lowe将SIFT算法分...原创 2019-03-30 15:59:51 · 14192 阅读 · 6 评论 -
OpenCV-Python——第25章:Shi-Tomasi 角点检测
目录0 原理 1 举例0 原理上一章我们学习了 Harris 角点检测,后来 1994 年,J.Shi 和 C.Tomasi在他们的文章《Good_Features_to_Track》中对这个算法做了一个小小的修改,并得到了更好的结果。我们知道 Harris 角点检测的打分公式为:但 Shi-Tomasi 使用的打分函数为:如果打分超过阈值,我们就认为它是一个角点...原创 2019-03-23 14:32:52 · 620 阅读 · 0 评论 -
OpenCV-Python——第24章:Harris 角点检测
目录0 原理 1 OpenCV 中的 Harris 角点检测 2 亚像素级精确度的角点0 原理在上一节我们已经知道了角点的一个特性:向任何方向移动变化都很大。Chris_Harris 和 Mike_Stephens 早在 1988 年的文章《A Combined Corner and Edge Detector》中就已经提出了焦点检测的方法,被称...原创 2019-03-23 14:13:47 · 3343 阅读 · 2 评论 -
OpenCV-Python——第22章:分水岭算法实现图像分割
目录0 原理 1 举例说 1)二值化 2)去除图像中的所有的白噪声 3)提取肯定是硬币的区域 4)获得边界区域5)标记区域 6)实施分水岭算法0 原理在地理学中,分水岭是一个山脊,该山脊通过不同的水系来区分排水区域。集水盆地是把水排入河流或水库的地理区域。分水岭变换把这些概念应用到灰度图像处理中,从而解决许多图像分割问题。理解分水岭变换要求我们把灰...原创 2019-03-15 16:27:27 · 12814 阅读 · 0 评论 -
OpenCV-Python——第21章:霍夫(Hough)圆环变换(圆环检测)
目录0 原理 1OpenCV 中的圆环检测0 原理圆形的数学表达式为其中(xcenter,ycenter)为圆心的坐标,r 为圆的直径。从这个等式中我们可以看出:一个圆环需要 3 个参数来确定。所以进行圆环霍夫变换的累加器必须是 3 维的,这样的话效率 就会很低。所以 OpenCV 用来一个比较巧妙的办法,霍夫梯度法,它可以使 用边界的梯度信息。1...原创 2019-03-09 16:45:46 · 7688 阅读 · 7 评论 -
OpenCV-Python——第21章:霍夫(Hough)直线变换(直线检测)
目录0 原理 1 OpenCV中的霍夫变换0 原理霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。及时要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。首先将一条直线用一个点表示,这样用一个点表示直线上所有的点,一开始人们使用斜截式y=kx+q中的(k,q)来表示一条...原创 2019-03-09 16:23:50 · 21363 阅读 · 2 评论 -
OpenCV-Python——第20章:模板匹配(在一个图像内搜索另一个图像)
目录0 原理 1 OpenCV中的模板匹配 2 多对象的模板匹配0 原理和 2D 卷积一样,它也是用模板图像在输入图像(大图)上滑动,并在每一个位置对模板图像和与其对应的输入图像的子区域进行比较。OpenCV 提供了几种不同的比较方法。返回的结果是一个灰度图像,每一个像素值表示了此区域与模板的匹配程度。如果输入图像的大小是(WxH),模板的大小是(wxh),输...原创 2019-03-09 15:09:13 · 5016 阅读 · 0 评论 -
OpenCV-Python——第19章:傅里叶变换
目录0 原理 1 Numpy中的傅里叶变换 2 OpenCV中的傅里叶变换 3 滤波的本质0 原理傅里叶变换经常被用来分析不同滤波器的频率特性。我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性。实现 DFT 的一个快速算法被称为 快速傅里叶变换(FFT)。关于傅里叶变换的细节知识可以在任意一本图像处 理或信号处理的书中找到。请查看本小...原创 2019-03-09 10:39:56 · 3349 阅读 · 2 评论 -
OpenCV-Python——第18.4章:直方图反向投影
目录0 原理 1 Numpy中的算法 2OpenCV 中的反向投影 3 举例0 原理直方图反向投影是由 Michael J. Swain 和 Dana H. Ballard 在他们的文章“Indexing via color histograms”中提出。那它到底是什么呢?它可以用来做图像分割,或者在图像中找寻我们感兴趣的部分。简单来说,它会输出与...原创 2019-03-02 10:33:39 · 629 阅读 · 0 评论 -
OpenCV-Python——第18.3章:2D直方图
目录1 OpenCV中的2D直方图 2 Numpy中2D直方图 3 绘制2D直方图在前面的部分我们介绍了如何绘制一维直方图,之所以称为一维,是因为我们只考虑了图像的一个特征:灰度值。但是在 2D 直方图中我们就要考虑 两个图像特征。对于彩色图像的直方图通常情况下我们需要考虑每个的颜色(Hue)和饱和度(Saturation)。根据这两个特征绘制 2D 直方图。...原创 2019-03-02 09:27:45 · 875 阅读 · 0 评论 -
OpenCV-Python——第27章:SURF特征点提取算法
注意:本章使用的是opencv-contrib-python的3.4.2.16版本,安装过程如下:pip uninstall opencv-pythonpip install opencv-contrib-python==3.4.2.16目录0 原理 1OpenCV 中的 SURF 2 举例0 原理在上一节中我们学习了使用 SIFT 算...原创 2019-03-30 16:37:48 · 15191 阅读 · 3 评论 -
OpenCV-Python——第29章:ORB(Oriented FAST and Rotated BRIEF)特征检测算法
目录0 原理 1 OpenCV中的BRIEF 2 OpenCV中的ORB算法特征点检测完之后的匹配可以参考:https://blog.csdn.net/yukinoai/article/details/890558600 原理对于一个 OpenCV 的狂热爱好者来说 ORB 最重要的一点就是:它来自“OpenCV_Labs''。这个算法是在 2011 年提出的。在计...原创 2019-04-06 10:41:10 · 2358 阅读 · 0 评论 -
OpenCV-Python——第32章:Meanshift 和 Camshift目标跟踪算法
翻译自:https://docs.opencv.org/master/db/df8/tutorial_py_meanshift.html目录1Meanshift1.1 原理1.2 OpenCV中的Meashift2CAMSHIFT2.1 原理2.2 OpenCV 中的 Camshift1Meanshift1.1 原理Meanshift 算法的基本原理是...翻译 2019-04-20 14:06:16 · 3767 阅读 · 11 评论 -
OpenCV-Python——小项目1:实现文档扫描
目标:1. 识别图片中的文档并矫正2. 可以旋转结果来调整3. 可以保存。注意:文档与背景差别越大越好。效果如下:原图像:识别结果:矫正结果:程序如下:import cv2import numpy as np# 文档长宽,下面是A4纸比例x = 420 # 长y = 600 # 宽def preProcessor(img):...原创 2019-04-20 10:23:02 · 4577 阅读 · 4 评论 -
OpenCV-Python——第37章:对极几何(Epipolar Geometry)
目录1 基本概念2 代码1 基本概念在我们使用针孔相机时,我们会丢失大量重要的信息,比如说图像的深度,或者说图像上的点和摄像机的距离,因这是一个从 3D 到 2D 的转换。因此一 个重要的问题就产生了,使用这样的摄像机我们能否计算除深度信息呢?答案 就是使用多个相机。我们的眼睛就是这样工作的,使用两个摄像机(两个眼睛), 这被称为立体视觉。我们来看看 OpenCV 在这方面给我们都...原创 2019-05-04 15:26:16 · 5929 阅读 · 3 评论 -
OpenCV-Python——第36章:姿势估计
目录1 基础2 渲染一个立方体1 基础在上一节的摄像机标定中,我们已经得到了摄像机矩阵,畸变系数等。有了这些信息我们就可以估计图像中图案的姿势,比如目标对象是如何摆放,如 何旋转等。对一个平面对象来说,我们可以假设 Z=0,这样问题就转化成摄像 机在空间中是如何摆放(然后拍摄)的。所以,如果我们知道对象在空间中的 姿势,我们就可以在图像中绘制一些 2D 的线条来产生 3D 的效果。...原创 2019-05-04 09:32:22 · 3896 阅读 · 0 评论 -
OpenCV-Python——第35章:摄像头标定
目录1 基础2 代码2.0 获取棋盘图像2.1 设置2.2 标定2.3 畸变校正3反向投影误差1 基础今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两种:径向畸变和切想畸变。如下图所示,用红色直线将棋盘的两个边标注出来, 但是你会发现棋盘的边界并不和红线重合。所有我们认为应该是直线的也都凸出来了。这种畸变可以通过下面的方程组进行纠正:...原创 2019-04-28 09:56:46 · 5934 阅读 · 4 评论 -
OpenCV-Python——第34章:背景减除
目录0 基础1 BackgroundSubtractorMOG2 BackgroundSubtractorMOG23BackgroundSubtractorGMG0 基础在很多基础应用中背景检出都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数,或者是交通摄像头,需要提 取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出来。 ...原创 2019-04-27 19:49:53 · 6603 阅读 · 0 评论 -
OpenCV-Python——一个搞笑的小程序,实现抖音戴墨镜效果
转自:github地址:https://github.com/tomoncle/face-detection-induction-course目录简介摄像头实时运行图片生成gif动图简介在github看到的一个搞笑的小程序分享给大家,github地址:https://github.com/tomoncle/face-detection-induction-course效...转载 2019-04-14 10:52:41 · 3608 阅读 · 0 评论 -
OpenCV-Python——官方教程OpenCV-Python Tutorials翻译和例子下载
OpenCV图片处理部分告一段落,下面开始视频处理,在此之前把我参考的资料和我之前博客内的代码和素材整理了一下放在下面,希望对大家的学习有所帮助。1. 前面的博客主要参考的是OpenCV官方教程:https://docs.opencv.org/master/d6/d00/tutorial_py_root.html2. 中文版教程,注意是python2:链接: https://pan...原创 2019-04-14 10:38:47 · 2308 阅读 · 0 评论 -
OpenCV-Python——第31章:特征匹配与单应性查找对象
目录0 基础 1 代码0 基础先解释一下单应性,在计算机视觉中:平面的单应性被定义为从一个平面到另一个平面的投影映射。比如,一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。之前我们使用一个查询图像,在其中找到一些 特征点(关键点),我们又在另一幅图像中也找到了一些特征点,最后对这两幅 图像之间的特征点进行匹配。简单来说就是:我们在一张杂乱的图像...原创 2019-04-14 09:47:38 · 2166 阅读 · 0 评论 -
OpenCV-Python——第30章:特征匹配
目录1 Brute-Force匹配的基础2 对ORB描述符进行蛮力匹配3对 SIFT 描述符进行蛮力匹配和比值测试4 FLANN匹配器1 Brute-Force匹配的基础蛮力匹配器是很简单的。首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。对于 BF 匹配器,我们首先要使用 cv2.BFMatcher...原创 2019-04-06 16:32:40 · 2995 阅读 · 0 评论 -
OpenCV-Python——第28章:FAST特征检测算法
目录原理 使用FAST算法进行特征提取 机器学习的角点检测器 非极大值抑制 OpenCV中的FAST特征检测器0 原理我们前面学习了几个特征检测器,它们大多数效果都很好。但是从实时处理的角度来看,这些算法都不够快。一个最好例子就是 SLAM(同步定位与地 图构建),移动机器人,它们的计算资源非常有限。 为了解决这个问题,Edward_Roste...原创 2019-04-06 11:57:50 · 4610 阅读 · 0 评论 -
OpenCV-Python——第18.2章:图像直方图均衡化
目录0 原理 1 OpenCV 中的直方图均衡化 2 CLAHE 有限对比适应性直方图均衡化0 原理想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很 高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方 图做一个横向拉伸(如下图),这就是直方图均衡化要做的事情。通...原创 2019-02-24 12:42:51 · 1165 阅读 · 0 评论 -
OpenCV-Python——第18.1章:图像直方图的计算、绘制与分析
目录0 原理 1 统计直方图 2 绘制直方图 3 使用掩膜0 原理什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点的数目。直方图其实就是对图像的另一种解释。一下图为例,通过直方图我们可以对图像的对比度,亮度,灰度分布等有一个直观的认识。几乎所有的图像...原创 2019-02-24 11:17:21 · 14853 阅读 · 1 评论 -
OpenCV-Python——第17.5章:轮廓的层次结构
目录1 什么是层次结构 2 OpenCV 中层次结构 3 轮廓检索模式在前面的内容中我们使用函数 cv2.findContours (https://blog.csdn.net/yukinoai/article/details/87891698)来查找轮廓,我们需要传入一个参数:轮廓提取模式(Contour_Retrieval_Mode)。我们总是把它设置为 cv2....转载 2019-02-24 10:30:34 · 635 阅读 · 0 评论 -
OpenCV-Python——第13章:图像的形态学操作(腐蚀,膨胀,开运算,闭运算....)
目录1.1 腐蚀 1.2 膨胀 2 高级形态学转换 3 举例形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来。数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算。 1 基础形态学转换1.1 腐蚀cv2.erode(src, kernel, dst, anchor, iterations, borde...原创 2019-02-16 13:57:58 · 3728 阅读 · 0 评论 -
OpenCV-Python——第12章:滤波器与图像平滑(图像模糊)
目录2D卷积 平均模糊 高斯模糊 中值模糊 双边滤波 例子1 2D卷积与以为信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。filter2D(src, ddept...原创 2019-02-16 10:49:28 · 1126 阅读 · 0 评论 -
OpenCV-Python——第11章:图像阈值
目录简单阈值 自适应阈值 Otsu's二值化1 简单阈值ret, dst = threshold(src, thresh, maxval, type)ret: retVal(返回值),在Otsu‘s中会用到 dst: 目标图像 src: 原图像,只能输入单通道图像,通常来说为灰度图 thresh: 阈值 maxval: 当像素值超过了阈值(或者小于阈值,根据...原创 2019-02-16 09:52:41 · 921 阅读 · 1 评论 -
OpenCV-Python——第7章:图像的基本运算
目录1 图像的算术运算 2 图像的逻辑运算1 图像的算术运算参数含义:src1:第一张图像 src2:第二张图像 dst:destination,目标图像,需要提前分配空间,可省略 mask:掩膜 scale:缩放比,常量 dtype:数据类型,默认等于-1cv2.add(src1,src2,dst,mask,dtype)输出两个图像加法:dst = s...原创 2019-01-16 15:27:12 · 3487 阅读 · 1 评论 -
OpenCV-Python——第4章:鼠标事件
1 鼠标回调函数cv2.setMouseCallback(windowName, onMouse, param=None) 用于将鼠标事件与窗口联系起来windowName:窗口名称 onMouse:鼠标响应函数 param:响应函数传递的的参数2 鼠标响应函数onMouse(event, x, y, flags, param)用于设置鼠标事件event:鼠标...原创 2019-01-09 15:21:51 · 4659 阅读 · 0 评论 -
OpenCV-Python——第3章:简单的绘图函数
目录设置空白画布 画线 画矩形 画圆 画椭圆 画多边形 添加文字1 设置空白画布import numpy as npimport cv2img = np.zeros((512,512,3), np.uint8)本质是创建了一个512x512x3的0矩阵,用于存储512x512的3通道图像,数据类型为uint8。常见函数参数:...原创 2019-01-08 17:04:59 · 1680 阅读 · 2 评论 -
OpenCV-Python——第6章:图像的基础操作
目录:1 获取图像的属性 2 获取像素值并修改 3 图像ROI(region of interest) 4 拆分及合并通道 5 为图像扩边1 获取图像的属性img.shape可以获取图像的形状。他的返回值是一个包含行数(高),列数(宽), 通道数的元组。img.size可以返回图像的像素数目img.dtype 可以返回返回图像的数据类...原创 2019-01-14 10:18:24 · 1970 阅读 · 2 评论 -
OpenCV-Python——第9章:颜色空间转换与目标追踪
目录1 转换颜色空间 2 物体跟踪 附录1 转换颜色空间OpenCV中有多种色彩空间,包括 RGB、HSI、HSL、HSV、HSB、YCrCb、CIE XYZ、CIE Lab8种,在图像处理中常需要转换色彩空间以便进行其他操作。cv2.cvtColor(src,code,dst,dstCn)src:原图像 code:转换方式,下面详细讲解 dst...原创 2019-01-17 16:22:11 · 1908 阅读 · 2 评论 -
OpenCV-Python——第8章:程序性能检测及优化
目录1 使用OpenCV检测程序效率 2 OpenCV中的默认优化 3 在Ipython中检测效率 4 效率优化技术1 使用OpenCV检测程序效率cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数。cv2.getTickFrequency()返回时钟频率,或者说每秒钟的时钟数。举个例子:import...原创 2019-01-17 11:01:03 · 711 阅读 · 0 评论 -
OpenCV-Python——第2章:视频的捕获、保存与播放
用摄像头捕获视频cv2.VideoCapture(设备索引号):创建一个VideoCapture 对象,他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。 一般的笔记本电脑都有内置摄像头。参数是 0。cap.read(): 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。所以最后你可以通过检查他的返回值来查看视频文件是否已经到...原创 2019-01-05 21:09:27 · 2663 阅读 · 1 评论 -
OpenCV-Python——第5章:滑动条的创建和使用
1 创建滑动条cv2.createTrackbar(trackbarName, windowName, value, count, onChange)trackbarName:滑动条名称 windowName:所在窗口名 value:初始值 count:最大值 onChange:回调函数名称2 获取滑动条数据cv2.getTrackbar(trackbarname, w...原创 2019-01-10 18:49:39 · 4260 阅读 · 0 评论 -
树莓派(Raspberry Pi)——利用原装摄像头实现简单人脸检测
前期准备1.保证摄像头正常使用2.安装opencv-python3.安装uv4l驱动(安装方式:https://blog.csdn.net/yukinoai/article/details/84659833)4.下载训练好的参数:链接:https://pan.baidu.com/s/1cCk9nKMx-SXHC_c2Y_NiGQ 密码:d8r95.将代码文件与参数文件放在同一文...原创 2018-11-30 16:58:20 · 3680 阅读 · 1 评论 -
OpenCV-Python——利用笔记本摄像头实现人脸检测
1.安装opencv首先参考其他文章安装pip。之后以管理员身份运行命令提示符,输入以下代码安装opencvpip install --user opencv-python可以使用以下代码测试安装是否成功#导入opencv模块import cv2#捕捉帧,笔记本摄像头设置为0即可capture = cv2.VideoCapture(0)#循环显示帧while(Tr...原创 2018-10-16 15:29:49 · 18318 阅读 · 6 评论