LOADING

加载过慢请开启缓存 浏览器默认开启

opencv函数表

Abstract: 整理的一些opencv函数,持续更新中

最近在学习opencv-python,整理了一些学到的函数作为笔记使用,感慨互联网的强大。

函数名 作用 参数信息
cv2.add(src1, src2, dst=None, mask=None, dtype=None) 对两张相同大小和类型的图像进行加法运算,或对一张图像与一个标量进行加法运算 scr1, scr2:进行加法运算的图像,或一张图像与一个 numpy array 标量
dst:输出的图像,可选项,默认值为 None
mask:掩模图像,8位灰度格式;掩模图像数值为 0 的像素,输出图像对应像素的各通道值也为 0。可选项,默认值为 None
dtype:图像数组的深度,即每个像素值的位数,可选项
若相加后的值大于255,则取255
cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None) 对两张相同大小和类型的图像进行权重加法 src1, src2:需要融合相加的两副大小和通道数相等的图像
alpha:src1的权重
beta:src2的权重
gamma:gamma修正系数,不需要修正设置为0
dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确认
dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位),选默认值None表示与源图像保持一致
cv2.approxPolyDP(curve, epsilon, closed, approxCurve=None) 以指定的精度逼近多边形曲线 curve: 2D点的输入向量
approxCurve: 近似的结果
epsilon: 指定近似精度的参数
closed: 如果为真,则近似曲线是闭合的(其第一个和最后一个顶点是已连接);否则,它不关闭
cv2.arcLength(curve, closed) 计算轮廓周长或曲线长度 curve: 2D点的输入向量
closed: 指示曲线是否闭合
cv2.blur(src, ksize, dst=None, anchor=None, borderType=None) 图像均值滤波 src:需要处理的图像,即原始图像。它可以有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F中的一种。

ksize:滤波核的大小。滤波核大小是指在均值处理过程中,其邻域图像的高度和宽度。

anchor:锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。

borderType:边界样式,该值决定了以何种方式处理边界。一般情况下不需要考虑该值的取值,直接采用默认值即可
cv2.boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None) 图像方框滤波 src:需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F中的一种
ddepth:处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度
ksize:滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高 度和宽度
anchor:锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点
normalize:表示在滤波时是否进行归一化(这里指将计算结果规范化为当前像素值范围内的值)处理,该参数是一个逻辑值,可能为真(值为1)或假(值为0):
1.当参数normalize=1时,表示要进行归一化处理,要用邻域像素值的和除以面积。此时方框滤波与均值滤波效果相同
2.当参数normalize=0时,表示不需要进行归一化处理,直接使用邻域像素值的和。当 normalize=0时,因为不进行归一化处理,因此滤波得到的值很可能超过当前像素值范围的最大值,从而被截断为最大值。这样,就会得到一幅纯白色的图像
borderType:边界样式,该值决定了以何种方式处理边界
cv2.boundingRect(array) 计算灰度图像的点集或非零像素的右上包围矩形 array: 输入灰度图像或2D点集
cv2.bitwise_and(src1, src2, dst=None, mask=None) 计算两个数组的位与结果 src1表示第一个array或scalar类型的输入值
src2表示第二个array或scalar类型的输入值
dst表示与输入值具有同样大小的array输出值
mask表示可选操作掩码,8位单通道array
cv2.cvtColor(src, code, dst=None, dstCn=None) 将图像从一种颜色空间转换为另一种颜色空间 src:输入图像即要进行颜色空间变换的原图像,可以是Mat类
dst:输出图像即进行颜色空间变换后存储图像,也可以Mat类
code:转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片。关于code参数
dstCn:目标图像通道数,如果取值为0,则由src和code决定
cv2.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None) 填充(扩边)图像,在卷积运算或填充时被用到 src:源图像
top:顶部方向上的像素数的边框宽度
bottom:底部方向上的像素数的边框宽度
left:左侧像素的边界宽度
right:沿正确方向的像素数的边框宽度
borderType:边界类型
BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhh
BORDER_REFLECT: fedcba|abcdefgh|hgfedcb
BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba
BORDER_WRAP: cdefgh|abcdefgh|abcdefg
BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii
value:一个可选参数
cv2.convertScaleAbs(src, dst=None, alpha=None, beta=None) 在输入数组的每个元素上,函数convertScaleAbs依次执行三个操作,缩放,获取绝对值,转换为无符号的8位类型:dst(I)=saturate_cast(src(I)∗alpha+beta) src: input array. 输入数组
dst: output array. 输出数组
alpha: optional scale factor. 可选比例因子
beta: optional delta added to the scaled values. 可选增量添加到缩放值
cv2.Canny(image, threshold1, threshold2, edges=None, apertureSize=None, L2gradient=None) Canny 边缘检测是一种使用多级边缘检测算法检测边缘的方法。Canny 边缘检测分为如下几个步骤:
步骤 1:去噪。噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉。
步骤 2:计算梯度的幅度与方向。
步骤 3:非极大值抑制,即适当地让边缘“变瘦”。
步骤 4:确定边缘。使用双阈值算法确定最终的边缘信息。
image: 为 8 位输入图像。
threshold1: 表示处理过程中的第一个阈值。
threshold2: 表示处理过程中的第二个阈值。
edges: 为计算得到的边缘图像。
apertureSize: 表示 Sobel 算子的孔径大小。
L2gradient: 为计算图像梯度幅度(gradient magnitude)的标识。其默认值为 False。如果为 True,则使用更精确的 L2 范数进行计算(即两个方向的导数的平方和再开方),否则使用 L1 范数(直接将两个方向导数的绝对值相加)
cv2.contourArea(contour, oriented=None) 计算轮廓面积 contour: 2D点的输入向量
oriented: 定向区域标志。如果为True,该函数将根据轮廓方向(顺时针或逆时针)返回一个带符号的面积值。默认情况下,该参数为False,这意味着返回绝对值
cv2.createCLAHE(clipLimit=None, tileGridSize=None) 自适应直方图均衡化 clipLimit: 颜色对比度的阈值
titleGridSize: 进行像素均衡化的网格大小,即在多少网格下进行直方图的均衡化操作
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None) 在图像中绘制圆 img: 图像
center: 圆心
radius: 圆的半径
color: 颜色
thickness: 线宽
lineType: 线的种类
shift: 点坐标的小数位数
cv2.calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None) 图像直方图统计 images: 原图像的图像格式为 uint8 或 float32。当传入函数时应该用中括号 [] 括来传入,例如[img]
channels: 同样用中括号来传入,它会告诉函数统幅的哪幅灰度图的直方图。如果传入的图像是灰度图它的值就是 [0],如果是彩色图像,那么传入的参数可以是 [0]、[1]、[2],它们分别对应着 B、G、R 通道,每个通道的图像都是灰度图
mask:掩模图像。统计整幅图像的直方图时就把它设为 None。但是如果你想统计图像的某一部分区域的直方图的,你就制作一个掩模图像并使用它
histSize:BIN 的数目。也应用中括号括来
ranges: 统计的像素值范围,常为 [0-256]
cv2.destroyWindow(winname) 用来释放( 销毁)指定窗口
cv2.destroyAllWindows() 用来释放( 销毁)所有窗口
cv2.dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None) 图像膨胀操作 src:目标图片
kernel:进行操作的核,默认为3×3
dst:与src大小和类型相同的输出图像
anchor:锚在元素中的位置;默认值(-1,-1)表示锚点位于元素中心
iterations:膨胀次数,默认为1
borderType:像素点外延的方法
borderValue:常数边框情况下的边框值
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None) 在图像中绘制轮廓 image: 目标图像
contours: 所有输入的轮廓
contourIdx: 选定某个轮廓进行绘制
color: 轮廓的颜色
thinckness: 绘制轮廓的线宽
lineType: 线的种类
hierarchy: 有关图像轮廓的拓扑信息
maxLevel: 绘制轮廓的最高级别
offset: 可选偏移量
cv2.erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None) 图像腐蚀操作 src:目标图片
kernel:进行操作的核,默认为3×3
dst:与src大小和类型相同的输出图像
anchor:锚在元素中的位置;默认值(-1,-1)表示锚点位于元素中心
iterations:腐蚀次数,默认为1
borderType:像素点外延的方法
borderValue:常数边框情况下的边框值
cv2.equalizeHist(src, dst=None) 均衡灰度图像的直方图 src: 八位单通道数组
dst: 返回值,与src大小和类型相同的目标图像
cv2.findContours(image, mode, method, contours=None, hierarchy=None, offset=None) 从图像中检索轮廓 image:8-bit单通道图像。该图像会将非0像素值视为1,0像素值视为0,因此也被视为二值图像。
mode:轮廓检索模式
RETR_EXTERNAL :只检索最外面的轮廓
RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中
RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界
RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次。( 最常用 )
method:轮廓逼近方法
CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,如下图左所示。所有其他方法输出多边形 ( 顶点的序列 )
CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分
contours:返回值,检测到的轮廓。每个轮廓都以点向量的形式存储
hierarchy:返回值,包含有关图像轮廓的拓扑信息
offset:可选偏移量,每个轮廓点偏移量。如果从图像ROI中提取轮廓,然后在整个图像上下文中对其进行分析,这将非常有用
cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None) 图像高斯滤波 src:输入图像;图像可以具有任何数量的信道,其独立地处理的,但深度应CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
dst:输出与图像大小和类型相同的图像src
ksize:高斯核大小。 ksize.width 并且 ksize.height 可以有所不同,但它们都必须是正数和奇数。或者,它们可以为零,然后从计算 sigma
sigmaX:X方向上的高斯核标准偏差
sigmaY:Y方向上的高斯核标准差;如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个西格玛均为零,则分别根据ksize.width 和 进行计算 ksize.height,建议指定所有的ksize,sigmaX和sigmaY。
borderType:像素外推方法
cv2.imread(filename, flags=None) 读取图片 filepath:读入imge的完整路径
flags:标志位,cv2.IMREAD_UNCHANGED
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代
cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代
PS:alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明
cv2.imshow(winname, mat) 在窗口中显示图像,该窗口和图像的原始大小自适应 winname:字符串,显示窗口的名称
img:所显示的 OpenCV 图像,nparray 多维数组
函数 cv2.imshow() 之后要用 waitKey() 函数设定图像窗口的显示时长,否则不会显示图像窗口
cv2.imwrite(filename, img, params=None) 保存图像 filename:要保存的文件的路径和名称,包括文件扩展名
img:要保存的 OpenCV 图像,nparray 多维数组
paras:不同编码格式的参数,可选项
cv2.CV_IMWRITE_JPEG_QUALITY:设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95),数值越大则图片质量越高;
cv2.CV_IMWRITE_WEBP_QUALITY:设置 .webp 格式的图片质量,取值为 0-100;
cv2.CV_IMWRITE_PNG_COMPRESSION:设置 .png 格式图片的压缩比,取值为 0-9(默认值 3),数值越大则压缩比越大
cv2.Laplacian(src, ddepth, dst=None, ksize=None, scale=None, delta=None, borderType=None) Laplacian(拉普拉斯)算子是一种二阶导数算子,其具有旋转不变性,可以满足不同方向的图像边缘锐化(边缘检测)的要求。通常情况下,其算子的系数之和需要为零 dst: 目标图像
src: 原始图像
ddepth: 目标图像的深度
ksize: 用于计算二阶导数的核尺寸大小。该值必须是正的奇数。当ksize的值为1时,Laplacian算子计算时采用的 3×3的核如上所示
scale: 计算Laplacian值的缩放比例因子,该参数是可选的。默认情况下,该值为 1,表示不进行缩放
delta: 加到目标图像上的可选值,默认为0
borderType: 边界样式
cv2.merge(mv, dst=None) 图像通道的合并 mv:要合并的单通道
dst:通道合并的图像,nparray 多维数组
cv2.medianBlur(src, ksize, dst=None) 图像中值滤波 src:是需要处理的图像,即源图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F中的一种。
ksize:是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,核大小必须是比1大的奇数,比如3、5、7等
dst:与src大小和类型相同的目标数组
cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None) 图像形态学操作 src:输入图像,输入图像的通道数是任意的
op:形态操作的类型kernel:输入一个数组作为核 关于参数
anchor:核的锚点位置,负值说明该锚点位于核中心。默认为核中心
iterations:腐蚀与膨胀被应用的次数。默认为None
borderType:像素边界扩展类型
borderValue:边界为常量时的边界值。默认值有特殊含义。默认值为None
cv2.matchTemplate(image, templ, method, result=None, mask=None) 模板匹配 image: 待搜索的原图
templ: 模板图像
result: 匹配的结果
method: 进行匹配的方法 关于method参数
mask: 掩膜,尺寸必须和templ相同;如果您只想检测模板图像上的特定区域,则可以为模板图像提供一个掩膜;掩膜,即为模板图像上感兴趣的区域,用于忽略模板图像上无用的干扰的特征,即不属于检测目标的干扰特征。对于模板上你不希望被搜索的区域,掩膜值应该设置为0。对于模板图像上您要进行搜索的区域,掩膜值应该设置为255。掩膜与模板图像具有相同的维度,并且每个元素的类型也需要一致
cv2.minMaxLoc(src, mask=None) 找出一个数组中的最大值和最小值 src: 输入的单通道数组
mask: 选择子数组的掩膜
cv2.namedWindow(winname, flags=None) 新建一个显示窗口,可以指定窗口的类型 winname:新建的窗口的名称
flags:窗口的标识,一般默认为WINDOW_AUTOSIZE
WINDOW_AUTOSIZE 窗口大小自动适应图片大小,并且不可手动更改
WINDOW_NORMAL 用户可以改变这个窗口大小
WINDOW_OPENGL 窗口创建的时候会支持OpenGL
cv2.pyrDown(src, dst=None, dstsize=None, borderType=None) 对图像进行滤波然后进行下采样。从一个高分辨率大尺寸的图像向上构建一个金字塔(尺寸变小,分辨率降低) src:输入图像
dst:输出图像
dstsize:输出图像的大小
borderType:图像边界的处理方式
cv2.pyrUp(src, dst=None, dstsize=None, borderType=None) 对图像进行滤波然后进行上采样。从一个低分辨率小尺寸的图像向下构建一个金子塔(尺寸变大,但分辨率不会增加) src:输入图像
dst:输出图像
dstsize:输出图像的大小
borderType:图像边界的处理方式
cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) 对图片进行缩放 src :原图像,即待改变大小的图像
dsize:输出图像的大小,如(300,300)
dst: 改变后的图像。这个图像和原图像具有相同的内容,只是大小和原图像不一样而已
fx:width方向的缩放比例
fy:height方向的缩放比例
interpolation:这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,有以下几种:
INTER_NEAREST - 最邻近插值
INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
INTER_CUBIC - 4x4像素邻域内的双立方插值
INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) 绘制简单、粗或填充的矩形。 img: 图像
pt1: 矩形的顶点
pt2: pt1的对角点
color: 线条颜色
thickness: 线宽
lineType: 线的种类
shift: 点坐标的小数位数
cv2.split(m, mv=None) 图像颜色通道分离 m:图像数据,nparray 多维数组
mv:指定的分拆通道(可选)
cv2.Sobel(src, ddepth, dx, dy, dst=None, ksize=None, scale=None, delta=None, borderType=None) 利用Sobel算子进行图像梯度计算 src:输入图像
ddepth: 输出图像的深度(可以理解为数据类型),-1表示与原图像相同的深度
dx,dy: 当组合为dx=1,dy=0时求x方向的一阶导数,当组合为dx=0,dy=1时求y方向的一阶导数(如果同时为1,通常得不到想要的结果)
dst: 输出图像,和src同类型
ksize:(可选参数)Sobel算子的大小,必须是1,3,5或者7,默认为3。求X方向和Y方向一阶导数时,卷积核分别为:
scale:(可选参数)将梯度计算得到的数值放大的比例系数,效果通常使梯度图更亮,默认为1
delta:(可选参数)在将目标图像存储进多维数组前,可以将每个像素值增加delta,默认为0
borderType:(可选参数)决定图像在进行滤波操作(卷积)时边沿像素的处理方式,默认为BORDER_DEFAULT
cv2.Scharr(src, ddepth, dx, dy, dst=None, scale=None, delta=None, borderType=None) 该算子具有和 Sobel 算子同样的速度,且精度更高。可以将 Scharr 算子看作对 Sobel 算子的改进 dst: 代表输出图像
src: 代表原始图像
ddepth: 代表输出图像深度。该值与函数 cv2.Sobel()中的参数 ddepth 的含义相同
dx: 代表 x 方向上的导数阶数
dy: 代表 y 方向上的导数阶数
dst: 输出图像,和src同类型
scale: 代表计算导数值时的缩放因子,该项是可选项,默认值是 1,表示没有缩放
delta: 代表加到目标图像上的亮度值,该项是可选项,默认值为 0
borderType: 代表边界样式
cv2.threshold(src, thresh, maxval, type, dst=None) 普通阈值函数 src:灰度图像
thresh:起始阈值
maxval:最大值
type:定义处理数据与阈值的关系 关于type参数
dst:输出大小和类型以及通道数与src相同的阵列
cv2.waitKey(delay=None) 在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下键,则继续等待 (循环)。不断刷新图像 , 频率时间为delay , 单位为ms,返回值为当前键盘按键值,设置 waitKey(0) , 则表示程序会无限制的等待用户的按键事件

各算子的核:

  • suanzi.png

关于cv2.cvtColor的code参数:

cvtColor_code.png

关于cv2.morphologyEx的op参数:

morphologyEx_op.png

关于cv2.threshold的type参数:

threshold_type.png

关于cv2.matchTemplate的method参数:

  • TM_SQDIFF:计算平方不同,计算出来的值越小,越相关。
  • TM_CCORR:计算相关性,计算出来的值越大,越相关。
  • TM_CCOEFF:计算相关系数,计算出来的值越大,越相关。
  • TM_SQDIFF_NORMED:计算归一化平方不同,计算出来的值越接近0,越相关。
  • TM_CCORR_NORMED:计算归一化相关性,计算出来的值越接近1,越相关。
  • TM_CCOEFF_NORMED:计算归一化相关系数,计算出来的值越接近1,越相关。

参考:

https://blog.csdn.net/LaoYuanPython/article/details/109016144

https://blog.csdn.net/LaoYuanPython/article/details/109143281

https://blog.csdn.net/qq_49478668/article/details/123217030

https://blog.csdn.net/qq_49478668/article/details/123342188

https://aistudio.csdn.net/62e38a8fcd38997446774d21.html

https://blog.csdn.net/weixin_45335726/article/details/122413457

https://blog.csdn.net/aiden_yan/article/details/117233106

https://blog.csdn.net/sunjintaoxxx/article/details/121420594

https://blog.csdn.net/weixin_44015965/article/details/109547129

https://youcans.blog.csdn.net/article/details/121169054

https://blog.csdn.net/youcans/article/details/121174740

https://blog.csdn.net/qq_49478668/article/details/123485382

https://www.jianshu.com/p/ea253fff2289

https://blog.csdn.net/qq_39507748/article/details/104539673

https://blog.csdn.net/fanjiule/article/details/81606596

https://blog.csdn.net/weixin_41466575/article/details/113058802

https://blog.csdn.net/weixin_42272768/article/details/110746790

https://blog.csdn.net/qq_39377418/article/details/101393007

https://blog.csdn.net/weixin_36670529/article/details/113755647

https://blog.csdn.net/Dontla/article/details/103201651

https://blog.csdn.net/m0_51402531/article/details/121065844

https://blog.csdn.net/qq_49478668/article/details/123808815

https://blog.csdn.net/m0_51402531/article/details/121066693

https://blog.csdn.net/Easen_Yu/article/details/89381410

https://blog.csdn.net/csdn1e/article/details/112951642

https://www.cnblogs.com/IllidanStormrage/articles/16288609.html