Python-Opencv
beihangzxm123
这个作者很懒,什么都没留下…
展开
-
Python-OpenCV 处理视频(二): 视频处理
0x00. 使用 Canny 算法边缘识别Canny 算法是一种多级边缘识别算法。Canny边缘识别算法可以分为以下5个步骤:应用高斯滤波来平滑图像,目的是去除噪声。找寻图像的强度梯度(intensity gradients)。应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)。应用双阈值的方法来决定转载 2016-01-04 10:09:00 · 4091 阅读 · 0 评论 -
Python下opencv使用笔记系列
参考:opencv+python - 我爱智能 - 博客频道 - CSDN.NEThttp://blog.csdn.net/on2way/article/category/5630773原创 2016-01-06 16:42:46 · 1245 阅读 · 0 评论 -
Python-OpenCV 杂项(三): 程序性能的检测和优化
在图像处理的中每秒钟都要进行大量的运算,所以对程序的要求不仅要能给出正确的结果,同时还需要快。0x00. 获取程序执行时间cv2.getTickCount 函数返回从参考点到这个函数被执行的时钟数。所以当在一个函数执行前后都调用它的话,就会得到这个函数的执行时间(时钟数)。使用示例:e1 = cv2.getTickCount()# 你的代码e2 = cv2.getTickCou转载 2016-01-04 10:43:58 · 1716 阅读 · 0 评论 -
Python-OpenCV 杂项(二): 鼠标事件
0x00. 查看鼠标事件下面的方法可以查看OpenCV支持的所有鼠标事件:import cv2events=[i for i in dir(cv2) if 'EVENT'in i]print events输出结果:['EVENT_FLAG_ALTKEY', 'EVENT_FLAG_CTRLKEY', 'EVENT_FLAG_LBUTTON', 'EVENT_FLAG_MBU转载 2016-01-04 10:43:15 · 9391 阅读 · 0 评论 -
Python-OpenCV 杂项(一):图像绘制
0x00. 绘制直线import numpy as npimport cv2img = np.zeros((512,512,3), np.uint8)cv2.line(img,(0,0),(511,511),(255,0,0),5)cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()0x01. 绘制矩形c转载 2016-01-04 10:42:21 · 1750 阅读 · 0 评论 -
Python-OpenCV 处理图像(五):图像中边界和轮廓检测
关于边缘检测的基础来自于一个事实,即在边缘部分,像素值出现”跳跃“或者较大的变化。如果在此边缘部分求取一阶导数,就会看到极值的出现。而在一阶导数为极值的地方,二阶导数为0,基于这个原理,就可以进行边缘检测。关于 Laplace 算法原理,可参考Laplace 算子0x01. Laplace 算法下面的代码展示了分别对灰度化的图像和原始彩色图像中的边缘进行检测:i转载 2016-01-04 10:40:39 · 45007 阅读 · 10 评论 -
Python-OpenCV 处理图像(四):图像直方图和反向投影
当我们想比较两张图片相似度的时候,可以使用这一节提到的技术直方图对比反向投影关于这两种技术的原理可以参考我上面贴的链接,下面是示例的代码:0x01. 绘制直方图import cv2.cv as cvdef drawGraph(ar,im, size): #Draw the histogram on the image minV, maxV, minl转载 2016-01-04 10:37:58 · 1575 阅读 · 0 评论 -
Python-OpenCV 处理图像(三):图像像素点操作
0x01. 像素有两种直接操作图片像素点的方法:第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第四列的像素点就直接 im[3,3] 就可以获取到这个点的RGB值。第二种就是使用 OpenCV 提供的 Get1D、 Get2D 等函数。推荐使用第一种办法吧,毕竟简单。0x02. 获取行和列像素有一下四个函数:cv.GetCol转载 2016-01-04 10:37:17 · 26240 阅读 · 0 评论 -
Python-OpenCV 处理图像(二):滤镜和图像运算
0x01. 滤镜喜欢自拍的人肯定都知道滤镜了,下面代码尝试使用一些简单的滤镜,包括图片的平滑处理、灰度化、二值化等:import cv2.cv as cvimage=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) #Load the imagecv.ShowImage("Original", image)grey = cv转载 2016-01-04 10:36:37 · 3873 阅读 · 0 评论 -
Python-OpenCV 处理图像(一):基本操作
0x00. 图片读、写和显示操作安装好 OpenCV 之后,首先尝试加载一张最简单的图片并显示出来,代码示例:第一种方式使用cv2.cv的LoadImage、ShowImage和SaveImage函数import cv2.cv as cv# 读图片image=cv.LoadImage('img/image.png', cv.CV_LOAD_IMAGE_COLOR)#Load th转载 2016-01-04 10:35:37 · 52374 阅读 · 7 评论 -
Python-OpenCV 处理视频(一): 输入输出
视频的处理和图片的处理类似,只不过视频处理需要连续处理一系列图片。一般有两种视频源,一种是直接从硬盘加载视频,另一种是获取摄像头视频。转载 2016-01-04 10:07:56 · 8257 阅读 · 2 评论 -
Python-OpenCV 图像与视频处理
转载自:http://segmentfault.com/a/1190000003742481一直断断续续的用过几次 OpenCV,感觉熟练掌握它的使用方法已经变的非常必要了,正好找到一个很不错的英文教程,就以此为起点,详细记录一下对 OpenCV 的学习过程吧。Update:这段时间通过使用了OpenCV之后,发现了很多实际操作过程中的问题,所以再次更新一下这些文章。首转载 2016-01-04 10:28:34 · 2517 阅读 · 1 评论 -
Python-OpenCV 处理图像(八):图像二值化处理
0x00. 图像二值化图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。0x01. 图像二值化处理在将图像二值化之前需要将其先灰度化,示例代码:转载 2016-01-04 10:26:37 · 9216 阅读 · 0 评论 -
Python-OpenCV 处理图像(七):图像灰度化处理
为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像。0x00. 灰度图灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值。转载 2016-01-04 10:25:42 · 24329 阅读 · 1 评论 -
Python-OpenCV 处理图像(六):对象识别
0x00. 特征识别这里主要用到两个函数:GoodFeaturesToTrack 和 extractSURFGoodFeaturesToTrack: 在图像中寻找具有大特征值的角点。SURF算法: 是一个稳健的图像识别和描述算法。总之这俩个我目前也不清楚能用来干嘛,以后用到了在更新吧。import cv2.cv as cvimport mathim =转载 2016-01-04 10:23:32 · 7823 阅读 · 0 评论 -
Python-OpenCV 处理视频(五): 运动方向判断
在检测出运动的物体之后,我还需要知道运动的方向,使用了上一节中的办法检测运动我发现很难去计算运动方向,开始考虑通过计算轮廓的中点的变化来实现,但是因为每次检测出得轮廓的数量不稳定,所以这个办法会让误差不可控。这时我发现了goodFeaturesToTrack函数,简直是救了我,goodFeaturesToTrack函数可以获取图像中的最大特征值的角点,以下是我的思路:对两帧图像做一转载 2016-01-04 10:21:48 · 10395 阅读 · 2 评论 -
Python-OpenCV 处理视频(四): 运动检测
0x00. 平均值法通过计算两帧图像之间变化了的像素点占的百分比,来确定图像中是否有动作产生。这里主要用到 Absdiff 函数,比较两帧图像之间有差异的点,当然需要将图像进行一些处理,例如平滑处理,灰度化处理,二值化处理,经过处理之后的二值图像上的点将更有效。代码示例:import cv2.cv as cvcapture=cv.CaptureFromCAM(0)frame转载 2016-01-04 10:19:57 · 11717 阅读 · 1 评论 -
Python-OpenCV 处理视频(三): 标记运动轨迹
0x00. 光流光流是进行视频中运动对象轨迹标记的一种很常用的方法,在OpenCV中实现光流也很容易。CalcOpticalFlowPyrLK 函数计算一个稀疏特征集的光流,使用金字塔中的迭代 Lucas-Kanade 方法。简单的实现流程:加载一段视频。调用GoodFeaturesToTrack函数寻找兴趣点。调用CalcOpticalFlowPyrLK函转载 2016-01-04 10:10:16 · 10650 阅读 · 4 评论 -
OpenCV Python教程系列
参考:OpenCV - sunny2038的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/sunny2038/article/category/904451转载 2016-01-07 11:41:50 · 3631 阅读 · 0 评论