文章目录
cv2.thresholdcv2.bitwise_andcv2.bitwise_orcv2.bitwise_notcv2.inRangecv2.resizecv2.adaptiveThresholdcv2.warpAffine仿射cv2.getRotationMatrix2Dcv2.warpPerspective投射cv2.getAffineTransformcv2.getPerspectiveTransform经过近一个月的学习,发现对图像的一些基本操作函数还是理解的不够透彻,因此觉得把一些常用的图像操作函数拿出来加深理解并记录下很有必要,方便以后查询。
cv2.threshold函数原型:threshold(src, thresh, maxval, type, dst=None)获取二值化图像;一般用于灰度图图像的二值化函数返回值:ret,dst;该函数有两个返回值,ret是用type为THRESH_OTSU或者THRESH_TRIANGLE方法计算出的阈值;dst是阈值化后的图像
src:输入的待二值化图像thresh:阈值,可由参数指定;或者由type参数确定计算方法maxval:像素最大取值type:THRESH_BINARY、THRESH_BINARY_INV、THRESH_TOZERO、THRESH_TOZERO_INV、THRESH_TRUNC;另外THRESH_OTSU、THRESH_TRIANGLE为阈值计算方法,可与前5个进行|运算后赋值给type参数THRESH_BINARY:像素值 < thresh,像素值取为0;像素值 > thresh,像素值取为maxvalTHRESH_BINARY_INV:像素值 < thresh,像素值取为maxval;像素值 > thresh,像素值取为0THRESH_TOZERO:像素值 < thresh,像素值取为0;像素值 > thresh,像素值保持不变THRESH_TOZERO_INV:像素值 < thresh,像素值保持不变;像素值 > thresh,像素值取为0THRESH_TRUNC:像素值 < thresh,像素值保持不变;像素值 > thresh,像素值取为maxvalTHRESH_OTSU:用于具有(图像的像素直方图)双波峰的灰度图像的二值化THRESH_TRIANGLE:用于具有(图像的像素直方图)单波峰的灰度图像的二值化cv2.bitwise_and函数原型:bitwise_and(src1, src2, dst=None, mask=None)函数返回值:调用时若无mask参数则返回src1 & src2,若存在mask参数,则返回src1 & src2 & mask
src1:输入原图1src2:输入原图2,src1与src2可以相同也可以不相同,可以是灰度图像也可以是彩色图像dst:若存在参数时:src1 & src2 或者 src1 & src2 & maskmask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像cv2.bitwise_or函数原型:bitwise_or(src1, src2, dst=None, mask=None)函数返回值:调用时若无mask参数则返回src1 | src2,若存在mask参数,则返回src1 | src2 | mask
src1:输入原图1src2:输入原图2,src1与src2可以相同也可以不相同,可以是灰度图像也可以是彩色图像dst:若存在参数时:src1 | src2 或者 src1 | src2 | maskmask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像cv2.bitwise_not函数原型:bitwise_not(src, dst=None, mask=None)函数返回值:调用时若无mask参数则返回按位取反回:~src1,若存在mask参数,则先做src1先做按位取反,然后按mask中bit=1的位取反
src1:输入原图1dst:若存在参数时:与返回值相同mask:可以是单通道8bit灰度图像,也可以是矩阵,一般为二值化后的图像cv2.inRange函数原型:inRange(src, lowerb, upperb, dst=None)函数返回值:二值图像
src:输入原图,可以为单通道灰度图像,也可以为3通道彩色图像lowerb:像素值区间下限upperb:像素值区间上限dst:若存在参数,则与返回值相同说明:单通道灰度图像,像素值低于lowerb和高于upperb的部分变成0,lower_red~upper_red之间的值变成255;三通道彩色图像,则每个通道分别与lowerb、upperb比较,然后按照相同办法修改像素值cv2.resize函数原型:cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)函数返回值:变换大小后的图像
src:待变换输入原图,可以为单通道灰度图像,也可以为3通道彩色图像dsize:变换后的图像尺寸,格式:宽高通道;当dsize为0时,它可以通过以下公式计算得出:dsize = Size(round(fxsrc.cols), round(fysrc.rows))fx - 水平轴上的比例因子。当它为0时,计算公式如下:(double)(dsize.width/src.cols)fy - 垂直轴上的比例因子。当它为0时,计算公式如下:(double)(dsize.heifht/src.rows)interpolation - 插值方法interpolation取值:INTER_NEAREST - 最近邻插值法interpolation取值:INTER_LINEAR - 双线性插值法(默认)interpolation取值:INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。interpolation取值:INTER_CUBIC - 基于4x4像素邻域的3次插值法interpolation取值:INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值注意:参数dsize和参数(fx, fy)不能够同时为0cv2.adaptiveThreshold函数原型:cv2.adaptiveThreshold(src, maxval, thresh_type, type, blocksize, C),自适应阈值二值化函数返回:二值化后的图像
src:输入图像,只能是单通道灰度图像maxval:当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值,与函数cv2.threshold相同thresh_type: 阈值的计算方法,包含以下2种类型:cv2.ADAPTIVE_THRESH_MEAN_C; cv2.ADAPTIVE_THRESH_GAUSSIAN_Ctype:二值化操作的类型,与固定阈值函数相同,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INVblocksize: 图片中分块的大小C:阈值计算方法中的常数项cv2.warpAffine仿射函数原型:cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)函数返回:仿射变换后的图像
src:输入图像,可以为单通道或彩色图像M:2*3仿射变换矩阵,矩阵格式[[1, 0, tx], [0, 1, ty]],也可由其它函数获取dsize:输出图像的大小dst:仿射变换后的输出图像flags:插值方法,默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值) cv2.INTER_AREA (区域插值) cv2.INTER_CUBIC(三次样条插值) cv2.INTER_LANCZOS4(Lanczos插值)borderMode:边界模式,可参照OpenCV第二篇的中的各种border模式borderValue:边界像素大小一般在使用前三个参数cv2.getRotationMatrix2D函数原型:cv2.getRotationMatrix2D(center, angle, scale)返回值:返回一个2*3矩阵,主要用于cv2.warpAffine仿射变换
center:旋转中心坐标,是一个元组参数(col, row)angle:旋转角度,旋转方向,逆时针scale:方向比例此函数主要用于获得一个旋转矩阵cv2.warpPerspective投射函数原型:cv2.warpPerspective(src, M, dsize, dst, flags, borderMode, borderValue)函数返回:投射变换后的图像
src:输入图像,可以为单通道或彩色图像M:3*3投射变换矩阵,可由函数cv2.getPerspectiveTransform获取dsize:输出图像的大小dst:仿射变换后的输出图像flags:插值方法,默认为 flags=cv2.INTER_LINEAR,表示线性插值,此外还有:cv2.INTER_NEAREST(最近邻插值) cv2.INTER_AREA (区域插值) cv2.INTER_CUBIC(三次样条插值) cv2.INTER_LANCZOS4(Lanczos插值)borderMode:边界模式,可参照OpenCV第二篇的中的各种border模式borderValue:边界像素大小一般在使用前三个参数cv2.getAffineTransform函数原型:cv2.getAffineTransform(src, dst)返回值:仿射变换2*3 矩阵
src:仿射变换原图三角形的三个顶点坐标dst:仿射变换输出图像三角形的三个顶点坐标cv2.getPerspectiveTransform函数原型:cv2.getPerspectiveTransform(src, dst)返回值:仿射变换3*3 矩阵
src:投射变换原图矩形的4个顶点坐标dst:投射变换输出图像矩形的4个顶点坐标--------------------- 原文:https://blog.csdn.net/zhaoyun_zzz/article/details/84817916