![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 80
可欣の扣得儿
这个作者很懒,什么都没留下…
展开
-
视频颜色追踪
在图像处理时,学习过绿幕抠图,放在视频里也是一样的。一、首先需要将图片转换成HSV格式hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)二、然后根据HSV中的色彩阈值表,将我们想要的对象提取出来这里我来提取一个绿色,可以看到绿色的区域是(35,43,46)(77,255,255)mask = cv.inRange(hsv,(35,43,46),(77,255,255))三、完整的代码如下:def color_object_trace():原创 2020-06-16 17:08:27 · 425 阅读 · 1 评论 -
视频背景分析
使用的方法:KNN(机器学习)、GMM(概率分析)目标:对于一个视频,区分出他的背景和前景(行人、船只等)用到的api是:cv.createBackgroundSubtractorMOG2() 或 cv.createBackgroundSubtractorKNN()def video_io_demo(): capture = cv.VideoCapture(0) bgfg = cv.createBackgroundSubtractorMOG2() bgfg1原创 2020-06-15 23:19:58 · 525 阅读 · 0 评论 -
OpenCV实时人脸检测
介绍一种实现人脸识别最简单的调包方法。这里的人脸分类原理:使用级联分类器这里我们只使用opencv封装好的api 。一、首先在github官网上下载用于识别的分类器地址:https://github.com/opencv/opencv/tree/master/data 这里的haar和lbp数据文件都是可以使用的,我先下载到本地。这里的分类器都是可以使用的。我们就选择其中一个来使用。二、代码如下1.读取视频def video_io_demo(): ...原创 2020-06-13 14:16:07 · 717 阅读 · 0 评论 -
OpenCV视频读写与处理
一、基础的视频读写从本地读取视频:capture = cv.VideoCapture("D:/pythonTest/img/flower.mp4")获取视频的各个参数:height = capture.get(cv.CAP_PROP_FRAME_HEIGHT)weight = capture.get(cv.CAP_PROP_FRAME_WIDTH)count = capture.get(cv.CAP_PROP_FRAME_COUNT) #帧数fps = capture.get(c原创 2020-06-12 19:31:58 · 960 阅读 · 1 评论 -
顶帽与黑帽&
一、顶帽与黑帽顶帽:原图减去开操作后的结果黑帽:闭操作的结果减去原图顶帽黑帽的作用:提取图像中微小有用的信息块首先将图片处理成二值图:src = cv.imread("D:/pythonTest/img/15.jpg")gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)cv.imshow("原创 2020-06-12 16:15:56 · 611 阅读 · 0 评论 -
Opencv获取形态学梯度
求图像梯度有很多方法,这里记录一下形态学梯度的方法。求图像的梯度可以在图像增强时起到作用。这里https://blog.csdn.net/saltriver/article/details/78987096有部分说明。我又用了大幂幂的美照,嘻嘻~ 原图:一、使用形态学中的膨胀和腐蚀,选择(3,3)矩形作为模板src = cv.imread("D:/pythonTest/img/1.jpg")cv.imshow("src", src)k = cv.getStructuringEle.原创 2020-06-11 23:04:41 · 416 阅读 · 0 评论 -
开闭操作
开操作:先腐蚀后膨胀 作用:删除小的干扰块闭操作:先膨胀后腐蚀先看一下开操作的运用:应用一:去除背景杂线首先将图片处理成二值图像src = cv.imread("D:/pythonTest/img/16.jpg")gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU)cv.imshow("binary",b.原创 2020-06-11 22:14:51 · 253 阅读 · 0 评论 -
基于梯度的霍夫圆检测
基于梯度的霍夫圆检测原理 略直接看代码一、首先读取一张图片,处理成灰度图。并对其做滤波降噪,因为霍夫圆检测是对噪声敏感的。这里用到的降噪方法一般是用保留边缘的滤波。src = cv.imread("D:/pythonTest/img/11.jpg")gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)gray = cv.fastNlMeansDenoising(gray,None,15,10,30)cv.imshow("input",src)我用的是这张原创 2020-06-11 18:06:53 · 754 阅读 · 0 评论 -
霍夫直线检测
霍夫直线检测的原理 略直接上代码:一、首先导入图片,并进行高斯滤波降噪src = cv.imread("D:/pythonTest/img/9.jpg")cv.imshow("input",src)src = cv.GaussianBlur(src,(3,3),0)我用的是这幅图:二、获取图像的轮廓#获取边缘edges = cv.Canny(src,150,300,apertureSize=3)cv.imshow("edges",edges)获取边缘后如下..原创 2020-06-10 23:12:25 · 835 阅读 · 0 评论 -
寻找月亮
目标:用图像投影的方法来寻找超简单的图案步骤一:模糊后转化成灰度图src = cv.imread("D:/pythonTest/img/8.jpg")#cv.imshow("input",src)src1 = cv.GaussianBlur(src,(3,3),0)gray = cv.cvtColor(src1,cv.COLOR_BGR2GRAY)步骤二:转化为二值图像ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.原创 2020-06-07 17:14:32 · 335 阅读 · 0 评论 -
点多边形测试
目标:基于轮廓与边缘的参考,计算图像中每个像素点到最近轮廓的距离,生成距离系数图像。应用场景:对象跟踪时,可以判断一个点或对象是否在指定区域内首先需要获取几何图像的轮廓:contours, hierachy = cv.findContours(dst, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)然后计算出每个像素距离轮廓的距离:dist_flag = cv.pointPolygonTest(contours[i],(col,row),True).原创 2020-05-28 21:53:00 · 304 阅读 · 0 评论 -
距离变换
距离变换是二值图像处理的常用手段,在骨架提取、图像窄化中经常用到。距离变换后得到的是与输入图像类似的灰度图,越远离背景边缘灰度值越大(越亮)。常用的算法有:欧几里得距离(L2 norm)、曼哈顿距离(L1 norm)、棋盘格距离(L1 ∞)算法的具体实现略。介绍一个api :cv.distanceTransform(dst,cv.DIST_L1,5,dstType=cv.CV_8U)cv.DIST_L1 要与 CV_8U 相配cv.DIST_L2要与 CV_32F相配...原创 2020-05-28 21:03:25 · 506 阅读 · 0 评论 -
获取图像的角度、中心点信息
使用到以下两个api:cv.moments(contours[i]) #他是一个字典类型(x,y),(a,b),degree = cv.fitEllipse(contours[i])代码如下:def contours_gem_demo(): src = cv.imread("D:/pythonTest/img/6.jpg") cv.imshow("input", src) src = cv.GaussianBlur(src, (3, 3), 0) gr原创 2020-05-26 19:20:46 · 1213 阅读 · 0 评论 -
Opencv 绘制轮廓
OpenCV里对一个图片绘制轮廓,需要用到两个API:cv.findContours(dst,cv.RETR_TREE,cv.CHAIN_APPROX_SIMPLE) 这里需要输入的是一个二值图,这里的RETR_TREE会绘制出内外的轮廓,如果改成RETR_EXTERNAL就只会绘制出外轮廓cv.drawContours(src,contours,i,(0,0,0),10,8) 这是绘制出轮廓代码如下:def find_contours_demo(): src = cv.i原创 2020-05-25 16:11:48 · 1076 阅读 · 0 评论 -
连通组件扫描
介绍OpenCV里的寻找连通器的api——connectedComponents(src,connectivity=8,ltype=cv.CV_32S)他会返回连通的数量和连通的标签数组:def connected_components_demo(): src = cv.imread("D:/pythonTest/img/2.jpg") cv.imshow("input",src) src = cv.GaussianBlur(src,(3,3),0) grey原创 2020-05-25 15:09:48 · 260 阅读 · 0 评论 -
全局阈值和自适应阈值
1、均值法计算图片的色彩平均值,然后大于阈值的设置为255,小于阈值的设置为0。2、OTSU通过寻找类内最小方差:即先将图像按照色彩画出直方图。按色彩值分成两个大类,使每个类的方差最小。3、三角法代码如下:def binary_segmetation_demo(): src = cv.imread("D:/pythonTest/img/1.jpg",cv.IMREAD_GRAYSCALE) cv.imshow("input",src) ret,dst = c原创 2020-05-23 17:27:27 · 4449 阅读 · 0 评论 -
二值图像
Threshold()的用法:输入的是一个灰度图。阈值可以手动给出也可以由算法寻找到。maxval == 255 。ret,dst = cv.threshold(src,127,255,cv.THRESH_BINARY)注意有两个接收值。参数分别为(灰度图、阈值、最大值、二值分割方法)可以用trackbar来调整阈值:import cv2 as cvimport numpy as npdef do_nothing(values): print(values)def原创 2020-05-22 17:20:12 · 487 阅读 · 0 评论