
专栏:opencv-python入门教程
学习opencv-python的基础知识
YukinoSiro
有缘再见。
展开
-
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 · 4933 阅读 · 4 评论 -
OpenCV-Python——第10章:图像的几何变换(移动、旋转、仿射及透视)
目录1 扩展缩放 2 平移 3 旋转 4 仿射变换 5 透视变换1 扩展缩放cv2.resize(src, dsize, dst, fx, fy, interpolation)src:原图像 dsize:目标尺寸,注意必须为整型 dst:目标图像 fx:水平轴缩放比例 fy:竖直轴缩放比例 interpolation:插值方法,共有5种:IN...原创 2019-01-31 11:33:55 · 2044 阅读 · 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 · 982 阅读 · 1 评论 -
OpenCV-Python——第12章:滤波器与图像平滑(图像模糊)
目录2D卷积 平均模糊 高斯模糊 中值模糊 双边滤波 例子1 2D卷积与以为信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。filter2D(src, ddept...原创 2019-02-16 10:49:28 · 1180 阅读 · 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 · 3799 阅读 · 0 评论 -
OpenCV-Python——第14章:图像梯度
目录原理 Sobel 算子和 Scharr 算子 Laplacian 算子 举例0 原理梯度简单来说就是求导,为什么对图像进行求导是重要的呢? 假设我们需要检测图像中的边缘。假设我们有一张一维图形。下图中灰度值的”跃升”表示边缘的存在: 使用一阶微分求导我们可以更加清晰的看到边缘”跃升”的存在(这里显示为高峰值)OpenCV 提供了三种不同的梯...原创 2019-02-17 15:44:58 · 693 阅读 · 0 评论 -
OpenCV-Python——第15章:Canny边缘检测
0 原理Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的。它是一个有很多步构成的算法高斯模糊 - GaussianBlur 灰度转换 - cvtColor 计算梯度 – Sobel/Scharr 非最大信号抑制 高低阈值输出二值图像具体如下0.1 噪声去除由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤...原创 2019-02-17 16:05:55 · 994 阅读 · 3 评论 -
OpenCV-Python——第16章:图像金字塔
目录原理 高斯金字塔 拉普拉斯金字塔 使用金字塔进行图像融合0 原理一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨率的原始图像。我 们把这组图像叫做图像金字...原创 2019-02-23 14:04:25 · 1218 阅读 · 0 评论 -
OpenCV-Python——第17.1章:初识图像轮廓
目录什么是轮廓 怎样绘制轮廓1 什么是轮廓轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同 的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理 或者 Canny 边界检测。 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图 像的话,你应该将原始图像存储到其他变量中。 在...原创 2019-02-23 14:37:48 · 997 阅读 · 1 评论 -
OpenCV-Python——第17.2章:图像轮廓特征
目录1 图像的矩 2 轮廓面积 3 轮廓周长 4 轮廓近似1 图像的矩图像的矩可以帮助我们计算图像的质心,面积等。函数 cv2.moments() 会将计算得到的矩以一个字典的形式返回。cv2.moments(array, binaryImage)array:输入数组或光栅图像,常用contours[0] binaryImage:默认值是false...原创 2019-02-23 15:14:21 · 1867 阅读 · 0 评论 -
OpenCV-Python——第17.3章:轮廓形状拟合(边界矩形,最小外接圆...)及性质
目录边界矩形 最小外接圆 椭圆拟合 直线拟合 轮廓性质 综合举例轮廓形状拟合1 边界矩形1.1 直边界矩形一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。 所以边界矩形的面积不是最小的。可以使用函数 cv2.boundingRect() 查找得到。 (x,y)为矩形左上角的坐标,(w,h)是矩形的宽和高。x,y,w,h = cv...原创 2019-02-23 15:48:00 · 20122 阅读 · 4 评论 -
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 · 2028 阅读 · 2 评论 -
OpenCV-Python——第8章:程序性能检测及优化
目录1 使用OpenCV检测程序效率 2 OpenCV中的默认优化 3 在Ipython中检测效率 4 效率优化技术1 使用OpenCV检测程序效率cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数。cv2.getTickFrequency()返回时钟频率,或者说每秒钟的时钟数。举个例子:import...原创 2019-01-17 11:01:03 · 772 阅读 · 0 评论 -
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 · 3707 阅读 · 1 评论 -
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 · 3830 阅读 · 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 · 2377 阅读 · 0 评论 -
OpenCV-Python——实现圆形检测与追踪
主要实现的功能是能实时识别视频中的绿色圆,并返回圆心位置,这既是对前面所学知识的总结,也是为下一步摄像头的追踪打下基础。opencv的安装可参考https://blog.youkuaiyun.com/yukinoai/article/details/83088190废话不多说,代码如下,环境为win10,python3:import numpy as npimport cv2cap = c...原创 2019-02-16 14:33:43 · 19475 阅读 · 18 评论 -
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 · 18634 阅读 · 6 评论 -
OpenCV-Python——第1章:图像的读入、显示与保存
读入图像cv2.imread():图像变量 = cv2.imread(‘图片路径’,第二参数)第二参数 = cv2.IMREAD_COLOR 或者 > 0: 读入一副彩色图像。图像的α通道会被忽略, 这是默认参数。第二参数 = cv2.IMREAD_GRAYSCALE 或者 = 0: 以灰度模式读入图像第二参数 = cv2.IMREAD_UNCH...原创 2019-01-04 20:43:04 · 2228 阅读 · 1 评论 -
OpenCV-Python——第2章:视频的捕获、保存与播放
用摄像头捕获视频cv2.VideoCapture(设备索引号):创建一个VideoCapture 对象,他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。 一般的笔记本电脑都有内置摄像头。参数是 0。cap.read(): 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。所以最后你可以通过检查他的返回值来查看视频文件是否已经到...原创 2019-01-05 21:09:27 · 2879 阅读 · 1 评论 -
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 · 1766 阅读 · 2 评论 -
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 · 4796 阅读 · 0 评论 -
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 · 4325 阅读 · 0 评论 -
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 · 2239 阅读 · 2 评论 -
OpenCV-Python——第17.4章:轮廓的其他函数(凸缺陷,形状匹配,....)
目录1 凸缺陷 2 Point Polygon Test 3 形状匹配1 凸缺陷前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷。 OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷。函数调用如下:hull = cv2.convexHull(cnt,returnPoints = False)defec...原创 2019-02-23 16:31:39 · 4076 阅读 · 0 评论 -
OpenCV-Python——第17.5章:轮廓的层次结构
目录1 什么是层次结构 2 OpenCV 中层次结构 3 轮廓检索模式在前面的内容中我们使用函数 cv2.findContours (https://blog.youkuaiyun.com/yukinoai/article/details/87891698)来查找轮廓,我们需要传入一个参数:轮廓提取模式(Contour_Retrieval_Mode)。我们总是把它设置为 cv2....转载 2019-02-24 10:30:34 · 711 阅读 · 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 · 15973 阅读 · 3 评论 -
OpenCV-Python——第28章:FAST特征检测算法
目录原理 使用FAST算法进行特征提取 机器学习的角点检测器 非极大值抑制 OpenCV中的FAST特征检测器0 原理我们前面学习了几个特征检测器,它们大多数效果都很好。但是从实时处理的角度来看,这些算法都不够快。一个最好例子就是 SLAM(同步定位与地 图构建),移动机器人,它们的计算资源非常有限。 为了解决这个问题,Edward_Roste...原创 2019-04-06 11:57:50 · 4934 阅读 · 0 评论 -
OpenCV-Python——第29章:ORB(Oriented FAST and Rotated BRIEF)特征检测算法
目录0 原理 1 OpenCV中的BRIEF 2 OpenCV中的ORB算法特征点检测完之后的匹配可以参考:https://blog.youkuaiyun.com/yukinoai/article/details/890558600 原理对于一个 OpenCV 的狂热爱好者来说 ORB 最重要的一点就是:它来自“OpenCV_Labs''。这个算法是在 2011 年提出的。在计...原创 2019-04-06 10:41:10 · 2500 阅读 · 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 · 3135 阅读 · 0 评论 -
OpenCV-Python——第31章:特征匹配与单应性查找对象
目录0 基础 1 代码0 基础先解释一下单应性,在计算机视觉中:平面的单应性被定义为从一个平面到另一个平面的投影映射。比如,一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。之前我们使用一个查询图像,在其中找到一些 特征点(关键点),我们又在另一幅图像中也找到了一些特征点,最后对这两幅 图像之间的特征点进行匹配。简单来说就是:我们在一张杂乱的图像...原创 2019-04-14 09:47:38 · 2357 阅读 · 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 · 3865 阅读 · 11 评论 -
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 · 3165 阅读 · 1 评论 -
OpenCV-Python——第34章:背景减除
目录0 基础1 BackgroundSubtractorMOG2 BackgroundSubtractorMOG23BackgroundSubtractorGMG0 基础在很多基础应用中背景检出都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数,或者是交通摄像头,需要提 取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出来。 ...原创 2019-04-27 19:49:53 · 7164 阅读 · 0 评论 -
OpenCV-Python——第35章:摄像头标定
目录1 基础2 代码2.0 获取棋盘图像2.1 设置2.2 标定2.3 畸变校正3反向投影误差1 基础今天的低价单孔摄像机(照相机)会给图像带来很多畸变。畸变主要有两种:径向畸变和切想畸变。如下图所示,用红色直线将棋盘的两个边标注出来, 但是你会发现棋盘的边界并不和红线重合。所有我们认为应该是直线的也都凸出来了。这种畸变可以通过下面的方程组进行纠正:...原创 2019-04-28 09:56:46 · 6241 阅读 · 4 评论 -
OpenCV-Python——第36章:姿势估计
目录1 基础2 渲染一个立方体1 基础在上一节的摄像机标定中,我们已经得到了摄像机矩阵,畸变系数等。有了这些信息我们就可以估计图像中图案的姿势,比如目标对象是如何摆放,如 何旋转等。对一个平面对象来说,我们可以假设 Z=0,这样问题就转化成摄像 机在空间中是如何摆放(然后拍摄)的。所以,如果我们知道对象在空间中的 姿势,我们就可以在图像中绘制一些 2D 的线条来产生 3D 的效果。...原创 2019-05-04 09:32:22 · 4407 阅读 · 0 评论 -
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 · 14867 阅读 · 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 · 688 阅读 · 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 · 3438 阅读 · 2 评论 -
OpenCV-Python——第18.1章:图像直方图的计算、绘制与分析
目录0 原理 1 统计直方图 2 绘制直方图 3 使用掩膜0 原理什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点的数目。直方图其实就是对图像的另一种解释。一下图为例,通过直方图我们可以对图像的对比度,亮度,灰度分布等有一个直观的认识。几乎所有的图像...原创 2019-02-24 11:17:21 · 16938 阅读 · 1 评论