
opencv
文章平均质量分 86
wust小吴
爱学习 活泼 开朗
展开
-
opencv 1-- getStructuringElement函数
getStructuringElement函数—获取结构化元素 形态学处理形态学操作,例如腐蚀,膨胀,开运算,闭运算等形态学操作是根据图像形状进行的简单操作 一般情况下对二值化图像进行的操作。需要输入两个参数: 一个是原始图像, 一个被称为结构化元素或核,它是用来决定操作的性质的OpenCV 函数 cv2.getStructuringElement()用户:e...原创 2018-05-19 15:16:38 · 17039 阅读 · 0 评论 -
opencv 9 -- 轮廓 近似方法
这是函数 cv2.findCountours() 的第三个参数。它到底代表什么意思呢?轮廓是一个形状具有相同灰度值的边界。 它会存贮形状边界上所有的 (x,y) 坐标。 但是需要将所有的这些边界点都存储吗? 这就是这 个参数要告诉函数 cv2.findContours 的这个参数如果被设置为 cv2.CHAIN_APPROX_NONE,所有的边界点都会被存储。 但是我们真的需要这么...原创 2018-05-21 14:26:37 · 2796 阅读 · 0 评论 -
opencv 9 -- 轮廓 特征 一
查找轮廓的不同特征,例如面积,周长,重心,边界框1 矩图像的矩可以帮助我们计算图像的质心,面积等函数 cv2.moments() 会将计算得到的矩以一个字典的形式返回cnt = contours[0]M = cv2.moments(cnt) print M结果:{'mu02': 185.57864792644978, 'mu03': -96.285208702...原创 2018-05-21 14:38:36 · 629 阅读 · 0 评论 -
opencv 9 -- 轮廓 特征 二
1 凸包凸包与轮廓近似相似,但不同,虽然有些情况下它们给出的结果是一样的。 函数 cv2.convexHull() 可以用来检测一个曲线是否具有凸性缺陷,并能纠 正缺陷。一般来说,凸性曲线总是凸出来的,至少是平的。如果有地方凹进去 了就被叫做凸性缺陷。例如下图中的手。红色曲线显示了手的凸包,凸性缺陷 被双箭头标出来了hull = cv2.convexHull(points[, hull...原创 2018-05-21 14:47:48 · 370 阅读 · 0 评论 -
opencv 9 -- 轮廓 特征 三
1 最小外接圆函数 cv2.minEnclosingCircle() 可以帮我们找到一个对象的外切圆。 它是所有能够包括对象的圆中面积最小的一个(x,y),radius = cv2.minEnclosingCircle(cnt)center = (int(x),int(y))radius = int(radius)img = cv2.circle(img,center,radius...原创 2018-05-21 14:56:27 · 553 阅读 · 0 评论 -
opencv 9 -- 轮廓 性质
1 长宽比边界矩形的宽高比x,y,w,h = cv2.boundingRect(cnt)aspect_ratio = float(w)/h2 Extent轮廓面积与边界矩形面积的比area = cv2.contourArea(cnt)x,y,w,h = cv2.boundingRect(cnt)rect_area = w*hextent = float(ar...原创 2018-05-21 15:10:14 · 585 阅读 · 1 评论 -
opencv 9 -- 轮廓 其他操作
1 凸缺陷对象上的任何 凹陷 都被成为凸缺陷OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷。函数调用如下hull = cv2.convexHull(cnt,returnPoints = False)defects = cv2.convexityDefects(cnt,hull)注意:如果要查找凸缺陷,在使用函数 cv2.conve...原创 2018-05-21 15:19:59 · 816 阅读 · 0 评论 -
opencv 9 -- 轮廓 层次结构
轮廓之间的父子关系使用函数 cv2.findContours 来查找轮廓, 我们需要传入一个参数:轮廓提取模式(Contour_Retrieval_Mode)。 我们总是 把它设置为 cv2.RETR_LIST 或者是 cv2.RETR_TREE,效果还可以。 但是它们到底代表什么呢? 同时,我们得到的结果包含 3 个数组, 第一个图像,第二个是轮廓,第三个是层次结构。 但是我们从...原创 2018-05-22 14:43:10 · 3192 阅读 · 1 评论 -
opencv 9 -- 轮廓 找 和 画
1 什么是轮廓轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。 轮廓在形状分析和物体的检测和识别中很有用–为了更加准确,要使用二值化图像。 –在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测 –查找轮廓的函数会修改原始图像 –如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中 –在 OpenCV 中,查找轮廓就像在...原创 2018-05-21 14:20:34 · 572 阅读 · 0 评论 -
opencv 8 --背景减除 -- BackgroundSubtractorMOG2
在很多基础应用中背景检出都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数;或者是交通摄像头,需要提取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出来。 技术上来说,我们需要从静止的背景中提取移动的前景如果你有一张背景(仅有背景不含前景)图像,比如没有顾客的房间,没有交通工具的道路等,那就好办了。我们只需要在新的图像中减去背景就可以得...原创 2018-05-21 11:29:17 · 13264 阅读 · 2 评论 -
opencv 2 -- 形态学处理
原图展示 一、 图像腐蚀 图像腐蚀: 卷积核沿着图像滑动,如果与卷积核对应的原图 像的所有像素值都是 1,那么中心元素就保持原来的像素值,否则就变为零。根据卷积核的大小靠近前景的所有像素都会被腐蚀 掉(变为 0),所以前景物体会变小,整幅图像的白色区域会减少。这对于去除 白噪声很有用import cv2import numpy as npimg = cv2.imread('...原创 2018-05-19 16:11:30 · 465 阅读 · 0 评论 -
opencv 3 -- waitKey()函数
函数功能: waitKey()函数的功能是不断刷新图像,频率时间为delay,单位为ms 返回值为当前键盘按键值1、waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发; 如果用户没有按下键,则接续等待(循环)常见:设置waitKey(0),则表示程序会无限制的等待用户的按键事件一般在imgshow的时候,如果设置waitKey(0),代表按任意键继续2.显示...原创 2018-05-19 16:32:30 · 16737 阅读 · 1 评论 -
opencv 4 -- 图像平滑与滤波--理论解释
滤波的作用是什么?一般可以对图像进行低通滤波、高通滤波 低通滤波:帮助我们去除噪音,模糊图像 高通滤波:帮助我们找到图像的边缘每个输入的图片或者视频帧都会因自然震动、光照变化或者摄像头本身等原因而产生噪声 对噪声进行平滑是为了避免在运动和跟踪时将其检测出来这就是为什么要做图像的平滑以及滤波处理opencv提供的滤波,最主要的作用就是帮助我们做模糊处理 都是低通滤波模糊图...原创 2018-05-19 16:54:54 · 624 阅读 · 0 评论 -
opencv 4 -- 图像平滑与滤波--核心卷积操作
opencv提供了四种低通滤波方式,基本原理是一致的,基本都是用 卷积核 进行处理什么叫卷积核?前面形态学处理章节,已经谈到核,基本思想跟深度学习网络中卷积层的那个核是一样的核从代码层面来讲,就是一个矩阵,一个表示大小范围的矩阵核,可以认为是过滤器,可以认为是一个窗口, 它通过不停的在画面上滑动,与原图相同的范围做卷积运算, 将计算结果替换掉原图对应区域的中心位置的值重复这...原创 2018-05-19 17:26:09 · 1326 阅读 · 0 评论 -
opencv 4 -- 图像平滑与滤波
一、blur—图像均值平滑滤波简称 平均滤波这是由一个归一化卷积框完成的。 他只是用卷积框覆盖区域所有像素的平 均值来代替中心元素可以使用函数 cv2.blur() 和 cv2.boxFilter() 来完 这个任务import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imr...原创 2018-05-19 17:53:27 · 637 阅读 · 0 评论 -
opencv 5 -- 图像阈值
这章将说,二值化的问题将图像黑白化,是很多图像处理技术的必要一步目的:使得图像的像素值更单一、图像更简单阈值可以分为全局性质的阈值,也可以分为局部性质的阈值,可以是单阈值的也可以是多阈值的一、简单阈值–cv2.threshhold()像素值高于阈值时,我们给这个像素 赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。 这个函数就是 cv2.thresh...原创 2018-05-20 00:04:41 · 484 阅读 · 0 评论 -
opencv 6 --cv2.absdiff
absdiff 获取差分图 就是将两幅图像作差两张图片进行对比,返回的结果代表他们的差异之处一般用在 比较与背景图的差异diff = cv2.absdiff(background, gray_lwpCV)两个图片相减,这里用的是灰度图,类型是uint8在 OpenCV单通道使用的数据类型是 uint8,两个uint8的数相减得不到负数,会得到差的补码...原创 2018-05-21 10:03:10 · 20428 阅读 · 0 评论 -
opencv 7 -- 边界矩形
有两类边界矩形 一、直边界矩形—boundingRect()一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。 所以边界矩形的面积不是最小的。 可以使用函数 cv2.boundingRect() 查找得到(x,y)为矩形左上角的坐标,(w,h)是矩形的宽和高x,y,w,h = cv2.boundingRect(cnt)cv2.boundingRect()接收的...原创 2018-05-21 10:38:25 · 1614 阅读 · 0 评论 -
opencv 10 -- 图像 颜色空间转换
颜色空间,常见的有三种模式:灰色图 BGR HSV备注:在opencv里面,BGR,这个顺序要注意的,常见的是RGB的称呼经常用到的 两种:BGR↔Gray 和 BGR↔HSV函数是:cv2.cvtColor(input_image ,flag), 其中 flag是转换类型对于 BGR↔Gray 的转换,使用的 flag 就是 cv2.COLOR_BGR2GRAY 对于...原创 2018-05-31 15:14:31 · 2984 阅读 · 0 评论