
机器视觉
魏长赟老师学生——尹江,关于机器视觉(OpenCV+Python)的学习笔记。
yin_jiang
机器视觉学习者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
十五天掌握OpenCV——GUI特性(图片部分)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-09-13 18:18:41 · 284 阅读 · 0 评论 -
十五天掌握OpenCV——GUI特性(视频部分)
魏老师学生——Cecil:学习OpenCV-机器视觉之旅捕获视频捕获:代码演示播放视频——cv2.imshow()播放:代码演示保存视频保存:代码演示捕获视频cap=cv2.VideoCapture(0) ——解释:获取视频。参数为设备索引号或者视频文件,内置摄像头取0。(按帧捕获视频)——实例化cap.read() ——解释:返回布尔值,如果帧数读取正确返回True。cap.isOpe...原创 2019-09-14 21:55:34 · 342 阅读 · 0 评论 -
十五天掌握OpenCV——绘图函数
魏老师学生——Cecil:学习OpenCV-机器视觉之旅画线画线:代码演示画矩形画矩形:代码演示画圆画圆:代码演示画椭圆画椭圆:代码演示画多边形画多边形:代码演示图片上加文字加文字:代码演示画线计算机坐标:原点在图像的左上角,x轴正方向为正右方,y轴正方向为正下方。img:绘图的基体图像。color:绘图线条颜色。thickness:线条粗细。默认值1,-1为闭合图形。1.cv2.li...原创 2019-09-15 23:11:46 · 685 阅读 · 1 评论 -
十五天掌握OpenCV——把鼠标做画笔
魏老师学生——Cecil:学习OpenCV-机器视觉之旅简单演示代码演示高级一点的示例代码演示简单演示Aim.在你双击图片的位置处绘制圆圈。1.创建鼠标事件回调函数。查看所有被支持的鼠标事件。代码演示# coding=utf-8import cv2events=[i for i in dir(cv2) if 'EVENT' in i]print(events)在双击处绘制圆圈...原创 2019-09-16 20:42:39 · 271 阅读 · 0 评论 -
十五天掌握OpenCV——滑动条做调色板
魏老师学生——Cecil:学习OpenCV-机器视觉之旅编小demo代码演示滑动条demo代码演示Aim:把滑动条绑定到opencv窗口,学习函数 cv2.getTrackbarPos() ,cv2.creatTrackbar()编小demoAim:调节滑动条来设定画板颜色。1.创建窗口显示颜色,三个滑动条设置B,G,R颜色。(默认窗口颜色:黑色)2.cv2.gerTrackbarPos...原创 2019-09-16 23:04:09 · 362 阅读 · 0 评论 -
十五天掌握OpenCV——图像基础操作
魏老师学生——Cecil:学习OpenCV-机器视觉之旅获取、修改像素值代码演示获取图像属性代码演示图像ROI代码演示拆分合并图像通道为图像扩边(填充)代码演示Aim:处理图像最重要的还是使用numpy,必须熟练掌握。获取、修改像素值读入图像根据像素行列获取像素值。对BGR图像,返回值:B,G,R。 对灰度图像,返回值:灰度(亮度)。array.item(value,value,val...原创 2019-09-17 23:02:32 · 195 阅读 · 0 评论 -
十五天掌握OpenCV——图像上的算术运算
魏老师学生——Cecil:学习OpenCV-机器视觉之旅图像加法代码演示图像混合代码演示按位运算代码演示Aim:掌握图像的:加法、减法、位运算。cv2.add()、cv2.addWeighted()图像加法cv2.add() ——解释:将两幅图像进行加法运算。使用numpy,res=img1+img2.加法类型:opencv饱和操作,numpy模操作。opencv效果更好。代码演示...原创 2019-09-18 22:02:22 · 168 阅读 · 0 评论 -
十五天掌握OpenCV——程序性能 检测 优化
魏老师学生——Cecil:学习OpenCV-机器视觉之旅用opencv检测程序效率代码演示opencv中默认优化代码演示Aim:图像处理是大运算量的,需要保证速度。检测程序效率;设法提高效率;cv2.getTickCount() , cv2.getTickFrequency().模块time:测量程序运行时间。模块profile:获取关于程序的详细报告,包含代码中各函数运行所需时间,每...原创 2019-09-19 20:07:13 · 249 阅读 · 0 评论 -
十五天掌握OpenCV——颜色空间转换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅转换颜色空间代码演示物体跟踪代码演示Aim:对图像进行颜色空间转换。从BGR到灰度图,从BGR到HSV。转换颜色空间cv2.cvtColor(input_image,flag) ——解释:flag转换类型。cv2.COLOR_BGR2GRAY。BGR转换Gray。cv2.COLOR_BGR2HSV。 BGR转换HSV。OpenC...原创 2019-09-20 21:15:52 · 167 阅读 · 0 评论 -
十五天掌握OpenCV——几何变换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅扩展缩放——改变图像的尺寸大小代码演示平移Aim:变换动作(移动,旋转,仿射变换)cv2.getPerspectiveTransfrom() ——解释:实现所有类型的变换。cv2.warpAffine() ——解释:参数是 23变换矩阵。cv2.warpPerspective() ——解释:参数是 33变换矩阵。扩展缩放——改变图像的...原创 2019-09-21 22:13:11 · 299 阅读 · 0 评论 -
十五天掌握OpenCV——图像阈值
魏老师学生——Cecil:学习OpenCV-机器视觉之旅简单阈值代码演示自适应阈值简单阈值cv2.threshold(原图像(灰度),阈值,B,阈值方法) ——解释:像素高于阈值,赋予B值,否则赋予C值。cv2.THRESH_BINARYcv2.THRESH_BINARY_INVcv2.THRESH_TRUNCcv2.THRESH_TOZEROcv2.THRESH_TOZERO_I...原创 2019-09-22 22:31:29 · 262 阅读 · 0 评论 -
十五天掌握OpenCV——图像平滑
魏老师学生——Cecil:学习OpenCV-机器视觉之旅代码演示——平均滤波器平均代码演示高斯模糊中值模糊双边滤波Aim:使用不同低通滤波器对图像模糊;使用自定义滤波器对图像卷积(2D)低通滤波(LPF):去除噪音,模糊图像。高通滤波(HPF):找到图像边缘。cv2.filter2D() ——解释:对图像进行卷积操作。代码演示——平均滤波器# coding=utf8import cv...原创 2019-09-23 19:37:32 · 187 阅读 · 0 评论 -
十五天掌握OpenCV——形态学转换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅腐蚀代码演示膨胀开运算闭运算形态学梯度礼帽黑帽结构化元素ElementAim:掌握形态学操作——腐蚀、膨胀、|基本| 开运算、闭运算 、梯度 |变体|。根据图像形状(二值化图像)进行的简单操作。参数:(原始图像,结构化元素\核)。腐蚀腐蚀前景物体的边界。去除白噪声或者断开两个连在一起的物体。代码演示# coding=utf8...原创 2019-09-24 22:17:33 · 141 阅读 · 0 评论 -
十五天掌握OpenCV——图像梯度
魏老师学生——Cecil:学习OpenCV-机器视觉之旅Sobel Scharr 算子原理:梯度=求导。Sobel、Scharr——求一阶、二阶导数;Laplacian——求二阶导数。Sobel Scharr 算子...原创 2019-09-25 19:31:59 · 191 阅读 · 0 评论 -
十五天掌握OpenCV——Canny边缘检测
魏老师学生——Cecil:学习OpenCV-机器视觉之旅原理原理List item原创 2019-09-26 20:34:27 · 226 阅读 · 0 评论 -
十五天掌握OpenCV——图像金字塔
魏老师学生——Cecil:学习OpenCV-机器视觉之旅原理使用金字塔融合图像代码演示原理图像金字塔:同一图像的不同分辨率的子图集合。若把最大图像置底部,最小图像置顶部,形似金字塔而得名。类型:高斯金字塔、拉普拉斯金字塔。高斯金字塔:将底部图像的连续行与列去除。Octave:顶部图像的像素值=下层图像5个像素的高斯加权平均值。操作一次,M×N的图像—>M/2×N/2的图像。面积变...原创 2019-09-27 18:11:12 · 180 阅读 · 0 评论 -
☆ 十五天掌握OpenCV——轮廓特征
魏老师学生——Cecil:学习OpenCV-机器视觉之旅矩轮廓特征:面积、周长、重心、边界框。矩作用:计算图像的质心、面积。cv2.moments() ——解释:将计算得到的矩以一个字典的形式返回。...原创 2019-09-28 20:26:02 · 296 阅读 · 0 评论 -
十五天掌握OpenCV——轮廓
魏老师学生——Cecil:学习OpenCV-机器视觉之旅轮廓代码演示轮廓的近似方法轮廓定义: 将连续的点连在一起的曲线,具有相同的颜色和灰度。应用场景:形状分析和物体的检测识别。注意点:图像二值化;预先阈值化处理或者Canny边界检测;查找轮廓的函数会修改原图;查找轮廓类似在黑色背景中找白色物体。cv2.findContours(图像,轮廓检索模式,轮廓近似方法) ——解释:三个返回值...原创 2019-09-29 12:54:57 · 165 阅读 · 0 评论 -
☆ 十五天掌握OpenCV——轮廓性质
魏老师学生——Cecil:学习OpenCV-机器视觉之旅长宽比:边界矩形的宽高比。aspect_ratio=float(w)/hExtent:轮廓面积比矩形面积。Solidity:轮廓面积比凸包面积。Equivalent Diameter:与轮廓面积相等的圆形的直径。方向:对象的方向,返回长轴和短轴长度。掩模和像素点:法一、Numpy函数 返回坐标(row,colum) 法二、ope...原创 2019-09-29 20:35:40 · 237 阅读 · 0 评论 -
十五天掌握OpenCV——轮廓相关函数
魏老师学生——Cecil:学习OpenCV-机器视觉之旅凸缺陷代码演示Point Polygon Test形状匹配代码演示凸缺陷凸缺陷:对象上的凹陷。hull=cv2.convexHull(cnt,returnPoints=False) ——解释:找凸包。defects=cv2.convexityDefects(cnt,hull) ——解释:返回数组,每一行包含(起点,终点,最远点,到最...原创 2019-09-30 19:55:30 · 215 阅读 · 0 评论 -
十五天掌握OpenCV——轮廓层次结构
魏老师学生——Cecil:学习OpenCV-机器视觉之旅层次结构opencv中层次结构opencv中轮廓检索模式原理:轮廓提取模式(Contour_Retrieval_Mode)与层次结构的关系。提取轮廓返回2数组,图像,轮廓,层次结构。层次结构概念:形状内部有形状,外部为父轮廓,内部为子轮廓。则图像中的所有轮廓都可以建立父子关系。opencv中层次结构[Next,Previous...原创 2019-10-01 12:44:05 · 262 阅读 · 0 评论 -
十五天掌握OpenCV——直方图的计算、绘制、分析
魏老师学生——Cecil:学习OpenCV-机器视觉之旅原理统计直方图代码演示绘制直方图代码演示代码演示掩模——统计图像某区域的直方图时构建代码演示原理解释图像,展现整幅图像的灰度分布。x轴是灰度值(0 - 255),y轴是图片中具有同一个灰度值的点数目。0:暗区域;255:亮区域。统计直方图BINS:把256个灰度值分为若干个小组即为BIN,取每组的像素数目总和。DIMS:收集数据的参...原创 2019-10-02 12:21:12 · 169 阅读 · 0 评论 -
十五天掌握OpenCV——直方图均衡化
魏老师学生——Cecil:学习OpenCV-机器视觉之旅代码演示opencv中的直方图均衡化代码演示CLAHE有限对比适应性直方图均衡化代码演示高质量图像:像素值分布广泛。直方图均衡化:直方图作横向拉伸。用途:使所有图片具有相同亮度条件的参考工具。脸部识别等。代码演示#coding=utf-8import cv2import numpy as npfrom matplotlib...原创 2019-10-03 10:16:31 · 146 阅读 · 0 评论 -
十五天掌握OpenCV——2D直方图
魏老师学生——Cecil:学习OpenCV-机器视觉之旅opencv中的2D直方图代码演示numpy中2D直方图代码演示绘制2D直方图代码演示代码演示特点:考虑图像的两个特征,颜色(Hue)和饱和度(Saturation)。opencv中的2D直方图cv2.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])...原创 2019-10-04 12:38:15 · 275 阅读 · 0 评论 -
十五天掌握OpenCV——直方图反向投影
魏老师学生——Cecil:学习OpenCV-机器视觉之旅numpy中的算法代码演示OpenCV中的反向投影代码演示用途:图像分割,选取需要部分。输出图像:与输入图像等大,各像素值代表输入图像上对应点属于目标对象的概率。使用:使用颜色直方图,颜色比灰度更易分割识别。numpy中的算法反向投影R=目标图像直方图M / 输入图像直方图I。B=D卷积核 × B查找目标位置为输出图像中灰度...原创 2019-10-05 20:33:24 · 127 阅读 · 0 评论 -
十五天掌握OpenCV——傅里叶变换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅Numpy中的傅里叶变换代码演示代码演示用处:分析不同滤波器的频率特性。2D离散傅里叶变化(DFT):分析图像的频域特性。快速傅里叶变换(FFT):实现DFT的快速算法。图像中,边界点或者噪声处的频率幅度变化大,是高频分量。Numpy中的傅里叶变换FFT包:实现快速傅里叶变换。np.fft.fft2(灰度图像名,输出数组大...原创 2019-10-06 14:54:02 · 462 阅读 · 0 评论 -
十五天掌握OpenCV——模板匹配
魏老师学生——Cecil:学习OpenCV-机器视觉之旅OpenCV模板匹配代码演示多对象的模板匹配代码演示原理:在一副大图中搜寻查找模板图像位置的方法。cv2.matchTemplate() ——解释:用模板图像在输入图像上滑动,并在每一个位置对模板图像和选中的子区域进行比较。返回结果:灰度图像。(其中的像素值代表区域与模板的匹配度)输入图像大小(W ,H),模板大小(w,h),则输出结...原创 2019-10-07 11:43:57 · 408 阅读 · 0 评论 -
十五天掌握OpenCV——Hough直线变换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅OpenCV中的霍夫变换代码演示probabilistic霍夫变换(霍夫变换的优化)代码演示霍夫变换:常用于检测各种形状。只要待检测形状可以用数学表达式表示。利用数值对(ρ,θ),表示 原点到直线的距离、垂线与横轴的夹角。累加器(2D数组),初始化,元素为0。不断取直线上的点,更新累加器中的值。OpenCV中的霍夫变换cv2.Hou...原创 2019-10-08 16:58:09 · 230 阅读 · 0 评论 -
十五天掌握OpenCV——霍夫圆环变换
魏老师学生——Cecil:学习OpenCV-机器视觉之旅代码演示圆形:(x−xcenter)2+(y−ycenter)2 = r2三个参数确定一个圆环。霍夫梯度法:使用边界的梯度信息。cv2.HoughCircle(img,cv2.HOUGH_GRADIENT,1,20,PARAM1=50,PARAM2=30,minRadius=0,maxRadius=0)代码演示#coding=ut...原创 2019-10-09 13:24:37 · 237 阅读 · 0 评论 -
十五天掌握OpenCV——分水岭算法图像分割
魏老师学生——Cecil:学习OpenCV-机器视觉之旅代码演示原理:灰度图中灰度值高的是山峰,低的是山谷。不停注水,形成的堤坝就是对图像的分割。为了预防过度分割,采取掩模。对山谷点进行设置。把区域分为前景 对象 或者 背景 采取不同颜色。剩下区域用0标记。堤坝筑完时的值是-1.代码演示分割紧挨在一起的图像。去除图像上的白噪声。腐蚀操作可以去除边缘像素,但硬币之间有接触,用距离变换再加上...原创 2019-10-10 08:55:58 · 206 阅读 · 0 评论 -
十五天掌握OpenCV——使用GrabCut算法进行交互式前景提取
魏老师学生——Cecil:学习OpenCV-机器视觉之旅演示代码演示掩模图像提醒GrabCut算法工作原理:user用矩形框选前景区域;算法进行迭代式分割以求最好结果。算法识别不理想时,用户在不理想部位单击鼠标进行改善。用户输入矩形,矩形外是背景,内部未知。计算机对输入图像进行初始化标记。使用高斯混合模型(GMM)对前景、背景建模。GMM学习且创建新的像素分布。根据像素分布创建一副...原创 2019-10-11 12:07:25 · 562 阅读 · 0 评论 -
十五天掌握OpenCV——图像特征提取与描述 —理解图像特征
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 OpenCV中的Harris角点检测代码演示亚像素级精确度的角点代码演示Q:我们是如何玩拼图的?A:找到一些适于被跟踪、容易被比较的唯一特征。Q:这些特征是什么?A:边缘比平面好找,角点最好找。有时是斑点。特征检测:找到图像特征的技术。特征描述:描述特征周围区域,便于在其他图像中找出相同特征。Harris角点检测窗口函数:矩...原创 2019-10-12 09:08:56 · 402 阅读 · 0 评论 -
十五天掌握OpenCV——Shi-Tomasi角点检测 适于跟踪的图像特征
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理检测函数代码演示原理Harris角点检测打分公式:R=λ₁λ₂-k(λ₁+λ₂)²Shi-Tomasi打分函数:R=min(λ₁,λ₂) 只有当λ₁和λ₂均大于min,才成为角点。检测函数cv2.goodFeaturesToTrack(img,maxCorners,minDistance,qualityLevel) ——解释:...原创 2019-10-13 12:22:42 · 280 阅读 · 0 评论 -
十五天掌握OpenCV——SIFT算法(Scale-Invariant Feature Trans-form) 收费算法 专利保护
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理尺度空间极值检测原理Harris算法:旋转不变特性,图像旋转后依然可以检测到角点。SIFT算法:尺度不变特征变换。帮助提取图像中关键点并计算其描述符。(1.尺度空间极值检测;2.关键点-极值点定位;3.为关键点-极值点指定方向参数;4.关键点描述符;5.关键点匹配。)尺度空间极值检测尺度空间滤波器:完成在小角点用小窗口检测,大...原创 2019-10-14 09:22:48 · 835 阅读 · 0 评论 -
十五天掌握OpenCV——SURF算法(Speeded-Up Robust Features)收费算法
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理原理加速稳健特征算法:加速版的SIFT。SURF使用盒子滤波器(box_filter)对LoG进行近似。盒子滤波器优点:进行卷积计算时可利用积分图像。积分图像特点:计算图像中某个窗口内所有像素和时,计算量大小和窗口大小无关。提高计算图像梯度的效率。SURF算法计算关键点的尺度与位置也依赖于Hessian矩阵行列式。U-S...原创 2019-10-15 08:36:51 · 1039 阅读 · 4 评论 -
十五天掌握OpenCV——FAST算法.角点检测
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 使用FAST算法进行特征提取机器学习的角点检测器非极大值抑制总结opencv中FAST特征检测器代码演示原理SLAM(同步定位与地图构建)用于移动机器人,但是计算资源有限,需要快速的算法提供支持。使用FAST算法进行特征提取在图中选取像素点p,判断其是不是关键点。Ip=像素点p灰度值。选择适当阈值t。在像素点p周围选择16个像...原创 2019-10-16 10:42:24 · 696 阅读 · 0 评论 -
十五天掌握OpenCV——BRIEF算法(Binary Robust Independent Elementary Features)
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理代码演示原理SIFT算法:使用128维描述符,由于浮点数故使用512个字节。SURF算法:使用64维描述符,使用256个字节。在嵌入式等资源有限设备上,不适合使用这样耗费大量内存和时间的算法。降维方法:PCA,LDA。用LSH(局部敏感哈希)将SIFT浮点数描述符转换为二进制字符串,再对字符串使用汉明距离匹配。汉明距离计算...原创 2019-10-17 09:22:15 · 590 阅读 · 0 评论 -
十五天掌握OpenCV——ORB算法(Oriented FAST and Rotated BRIEF)免费
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理OpenCV中的ORB算法代码演示原理ORB算法来自OpenCV_Labs,在计算开支、匹配效率以及专利问题方面可以替代SIFT和SURF算法。ORB算法是FAST关键点检测和BRIEF关键点描述器的结合体,并且通过修改增强了性能。首先使用FAST找到关键点,再使用Harris角点检测对关键点排序找到其中前N个点。并使用金字塔产...原创 2019-10-18 08:46:44 · 480 阅读 · 0 评论 -
十五天掌握OpenCV——特征匹配
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 学习目标蛮力匹配基础对ORB描述符进行蛮力匹配代码演示匹配器对象对SIFT描述符进行蛮力匹配和比值测试代码演示FLANN匹配器学习目标在图像间进行特征匹配;使用OpenCV中的蛮力(Brute-Force)匹配和FLANN匹配。蛮力匹配基础BF匹配器:先在第一幅图像选取一关键点,再依次与第二幅图像的每个关键点进行距离测试,最...原创 2019-10-19 11:49:43 · 486 阅读 · 0 评论 -
十五天掌握OpenCV——使用特征匹配和单应性查找对象
魏老师学生——Cecil:学习OpenCV-机器视觉之旅 原理代码演示Aim:联合使用特征提取和calib3d模块中的findHomography在复杂图像中查找已知对象。原理cv2.findHomography() : 在目标图像中准确找到查询对象。先将两幅图像的特征点传给函数cv2.findHomography() ,函数会找到对象的透视图变换。再使用cv2.perspectiveTr...原创 2019-10-20 13:38:13 · 397 阅读 · 0 评论