![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV/基本图像处理算法
@迷途小书童
这个作者很懒,什么都没留下…
展开
-
OpenCV+python:ROI与泛洪填充
1,ROI感兴趣区(Region of Interest,ROI) 是图像的一部分,它通过在图像上选择或使用诸如设定阈值(thresholding) 或者从其他文件(如矢量> 转换获得等方法生成。机器视觉、图像处理中,感趣区可以是从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,通常用来作为图像分类的样本、掩膜、裁剪区或及其他操作。源代码:import cv2 a...原创 2019-06-05 15:36:13 · 609 阅读 · 0 评论 -
利用numpy对像素点进行操作
1,源代码:import cv2 as cvimport numpy as npdef access_pixels(image): #定义访问图像像素值的函数 print(image.shape); height = image.shape[0] width = image.shape[1] channels = image.shape[2]...原创 2019-06-02 16:54:45 · 1315 阅读 · 0 评论 -
OpenCV+python:色彩空间转换及色彩通道的分离和合并
1,源代码:import cv2 as cvimport numpy as npdef color_space_demo(image): #色彩转换 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) #转化为灰度图 cv.imshow("gray", gray) hsv = c...原创 2019-06-02 18:53:37 · 1284 阅读 · 0 评论 -
OpenCV+python:像素运算
一、数值运算(调节亮度,调整对比度)OpenCV提供的图片色素的处理函数(运算的要求:两张图片的shape要一样):(1)相加:add() 黑色是0,白色为255,当大于255会为白色,小于0为黑色(2)相减:subtract()(3)相乘:divide()(4)相除:multiply()原理就是:通过获取两张(一次只能是两张)个图片的同一个位置的色素值来实现运算。impo...原创 2019-06-02 19:55:50 · 943 阅读 · 0 评论 -
OpenCV+python:轮廓发现与对象测量
1,轮廓发现当通过阈值分割提取到图像中的目标物体后,就需要通过边缘检测来提取目标物体的轮廓,使用这两种方法基本能够确定物体的边缘或者前景。接下来,通常需要做的是拟合这些边缘的前景,如拟合出包含前景或者边缘像素点的最小外包矩形、圆、凸包等几何形状,为计算它们的面积或者模板匹配等操作打下坚实的基础。一个轮廓代表一系列的点(像素),这一系列的点构成一个有序的点集,所以可以把一个轮廓理解为一个有序的点...原创 2019-06-08 20:07:55 · 1606 阅读 · 0 评论 -
形态学图像处理简介
1,图像形态学概念形态学,即数学形态学(mathematical Morphology),,主要用于从图像中提取对表达和描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质〈最具区分能力-most discriminative)的形状特征,如边界和连通区域等。同时像细化、像素化和修剪毛刺等技术也常应用于图像的预处理和后处理中,成为图像增强技术的有力补充。2,形态学图像处理操作...原创 2019-06-08 20:35:03 · 1463 阅读 · 0 评论 -
OpenCV+python:膨胀和腐蚀
1,概念及原理:膨胀(Dilating) (或)(1)将图像 A 与任意形状的内核 (B),通常为正方形或圆形,进行卷积。(2)内核 B 有一个可定义的 锚点, 通常定义为内核中心点。(3)进行膨胀操作时,将内核 B 划过图像A,将内核 B 覆盖区域的最大相素值提取,并代替锚点位置的相素。显然,这一最大化操作将会导致图像中的亮区开始”扩展” (因此有了术语膨胀 dilation )。以3...原创 2019-06-08 21:15:17 · 6206 阅读 · 0 评论 -
OpenCV+python:开闭操作
1,开闭操作简介开操作:开操作 = 腐蚀+膨胀 ,输入图像 + 结构元素作用:主要是应用在二值图像分析中,灰度图像亦可;用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积.提取水平或竖直的线闭操作:开操作 = 膨胀+腐蚀 ,输入图像 + 结构元素作用:主要是应用在二值图像分析中,灰度图像亦可;用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变...原创 2019-06-08 21:33:44 · 2105 阅读 · 0 评论 -
OpenCV+python:顶帽、黑帽、形态学梯度
1,顶帽2,黑帽3,形态学梯度4,源代码示例import cv2 as cvimport numpy as npdef hat_gray_demo(image): #基于灰度图像的顶帽操作 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) kernel = cv.getStructuringElement(cv.MORPH_R...原创 2019-06-09 16:33:52 · 1529 阅读 · 2 评论 -
OpenCV+python:分水岭算法
1,概念简介现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕 山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或 都是连通的关系,就是我们可爱的分水岭(watershed)分水岭算法是在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近(求梯度...原创 2019-06-09 17:33:16 · 3252 阅读 · 0 评论 -
OpenCV+python:人脸检测
1,人脸检测简介人脸检测的模型主要有两类,一类是知识模型,根据眼睛、嘴、鼻子的相对位置或面部不同部位的颜色深度差异来检测人脸,另一类是统计模型,把海量的人脸数据转换成二维像素矩阵,从统计的观点出发构建人脸模式空间判断人脸是否存在。2,特征数据最常用到的三种特征分别为Haar特征、LBP特征及HOG特征,三种特征描述了三种不同的局部信息:(1) Haar描述的是图像在局部范围内像素值明暗变换...原创 2019-06-09 21:42:53 · 430 阅读 · 0 评论 -
常见的特征点算法
1,纹理特征纹理特征刻画了图像中重复出现的局部模式与他们的排列规则,常用于图像分类和场景识别。其只能反映物体表面的特性,无法完全反映出物体的本质属性,所以仅仅利用纹理特征无法获得图像的高层次内容。优点: 具有旋转不变性;具有良好的抗噪性能;缺点:当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差; 有可能受到光照、反射情况的影响;从2D图像中反映出来的纹理不一定是3D物体表面真实的纹...原创 2019-06-25 15:28:20 · 2964 阅读 · 0 评论 -
常用的色彩空间简介
1,RGBRGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。在RGB模式中,由红、绿、蓝相叠加可以产生其它颜色,因此该模式也叫加色模式。所有显示器、投影设备以及电视机等等许多设备都依赖于这种加色模...原创 2019-06-24 17:16:05 · 2529 阅读 · 0 评论 -
OpenCV+python:圆检测
1,圆检测基本原理对霍夫变换有了这样一种理解-----实际上就是坐标变换,是一种数学上的变换,然后再转换到参数坐标系进行讨论,最终确定待检测圆(或者其他形状)的数学方程。在极坐标系下,圆的数学表达式如下:类似于霍夫变换直线检测,这里我们也定义一个累加器,但是与直线检测不同的是,直线检测参数是二维的,而圆的参数是三维的。如果一个圆上的点,都沿着其梯度方向画线,那么所有线的角点就是圆心。OpenC...原创 2019-06-08 09:19:44 · 5801 阅读 · 0 评论 -
OpenCV+python:霍夫变换与直线检测
1,霍夫变换霍夫变换是图像处理中从图像中识别几何形状的基本方法之一。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。霍夫变换最简单的是检测直线。,直线的方程表示可以由斜率和截距表示(这种表示方法,称为斜截式),如下所示:但是这样会参数问题,垂直线的斜率不存在(或无限大),这使得斜率参数m的值接近于无限。为此,为了更好的计算...原创 2019-06-08 08:40:24 · 6376 阅读 · 1 评论 -
OpenCV+python:Canny边缘检测算法
1,边缘处理图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。在空域运算中来说,对图像的锐化就是计算微分。由于数字图像的离散信号,微分运算就变成计算差分或梯度。图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度。拉普拉斯算子(二阶差...原创 2019-06-07 20:55:23 · 7247 阅读 · 0 评论 -
OpenCV+python:模糊操作
模糊操作是图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时减低噪声。模糊操作基于离散卷积计算:g(i,j)=∑k,lf(i+k,j+l)∗h(k,l)g(i,j) = \sum_{k,l}f(i+k,j+l)*h(k,l)g(i,j)=k,l∑f(i+k,j+l)∗h(k,l)其中权重核h(k,l)为“滤波系数”。上面的式子可以简记为:g=f⨂hg = f\bi...原创 2019-06-05 19:45:45 · 1597 阅读 · 0 评论 -
OpenCV+python:直方图的概念及绘制(Histogram)
1,直方图的概念图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。图像灰度直方图:一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分...原创 2019-06-05 20:49:26 · 4057 阅读 · 1 评论 -
OpenCV+python:直方图的应用(一)
1,直方图均衡化 (Histogram Equalization)假如图像的灰度分布不均匀,其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对比度较低。直方图均衡化,对图像进行非线性拉伸,重新分配图像的灰度值,使一定范围内图像的灰度值大致相等。这样,原来直方图中间的峰值部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较为平坦的直方图。使图像的灰度范围拉开或使灰度均匀分布...原创 2019-06-13 08:28:06 · 1983 阅读 · 0 评论 -
OpenCV+python:直方图的应用(二)
1,直方图反向投影的原理所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。反向投影可以通过颜色直方图来理解,我们检测图像中某个像素点的颜色是否位于直方图中,如果位于则将颜色加亮,通过对图像的检测,得出结果图像,结果图像一定和直方图像匹配。那么对于图像颜色的取样点越多,越能更好的找出目标图形。这里直方图的作用在于提供一个比较标准(也就是模版),即对于要检测的图像...原创 2019-06-06 09:14:51 · 178 阅读 · 0 评论 -
OpenCV+python:模板匹配
1,模板匹配的概念及原理模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.我们需要2幅图像:模板 (T): 将和原图像比照的图像块原图像 (I): 在这幅图像里,我们希望找到一块和模板匹配的区域我们的目标是检测最匹配的区域:为了确定匹配区域, 我们不得不滑动模板图像和原图像进行比较:通过滑动, 我们的意思是图像块一次移动一个像素 (从左往右,从上往下). 在...原创 2019-06-06 10:05:25 · 1161 阅读 · 0 评论 -
OpenCV+python:图像二值化
1,图像二值化概念及方法一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵。在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分量的取值范围均为0~255,比如电脑屏幕上的一个红色的像素点的三个分量的值分别为:255,0,0。在理解...原创 2019-06-06 11:17:42 · 18250 阅读 · 3 评论 -
OpenCV+python:图像金字塔
1,图像金字塔的概念图像金字塔是一种以多分辨率来解释图像的有效但概念简单的结构。应用于图像分割,机器视觉和图像压缩。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。2...原创 2019-06-07 10:48:25 · 1218 阅读 · 0 评论 -
OpenCV简介
1,概念:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。2,编程语言和操作系统:OpenCV用C++语言编写,它的主要接口也是C...原创 2019-06-02 10:27:57 · 2530 阅读 · 0 评论 -
win7查看电脑上openCV的版本
1,打开cmd命令行2,输入一下命令:pythonimport cv2cv2.__version__3,结果如下:原创 2019-06-02 10:53:12 · 2792 阅读 · 0 评论 -
OpenCV+python:读取图片
1,源码:import cv2 as cv #导入OpenCV库import numpy as np #导入numpy科学计算包print("--------- Python OpenCV Tutorial ---------")src = cv.imread...原创 2019-06-02 11:08:38 · 2111 阅读 · 0 评论 -
OpenCV+python:读取图片和视频详细信息
1,源代码import cv2 as cvimport numpy as npdef video_demo(): #定义读取视频信息的函数 capture = cv.VideoCapture(0) #定义读取图像信息的函数 while(True): ret, frame = capt...原创 2019-06-02 11:45:01 · 3125 阅读 · 0 评论 -
OpenCV+python:图像梯度
1,图像梯度的概念梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的、纵向的、斜方向的等等),所需要的是一个核模板。模板的不同结果也不同。所以能够看到,全部的这些个算子函数,归结究竟都能够用函数cv2.filter2D()来表示,不同的方法给予不同的核模板,然后演化为不同的算子。在微积分中,一维函数的一阶微分的基本定义是这样的:而图像是一个二维函数f(x,y),其微分...原创 2019-06-07 19:30:16 · 1662 阅读 · 0 评论 -
局部特征点算法简介
1,概念简介图像特征可以包括颜色特征、纹理特征、形状特征以及局部特征点等。其中局部特点具有很好的稳定性,不容易受外界环境的干扰。在对图像进行特征提取时,通常要将图像灰度化,这是因为颜色,易受光照影响,难以提供关键信息,故将图像进行灰度化而计算梯度,同时也可以加快特征提取的速度。局部特征从总体上说是图像或在视觉领域中一些有别于其周围的地方;局部特征通常是描述一块区域,使其能具有高可区分度;局部特...原创 2019-06-24 18:42:54 · 1255 阅读 · 0 评论