cv2笔记
部分opencv函数
基础函数
读入图像
cv2.imread(filepath,flags)
filepath: 图片的完整路径
flags: cv2.IMREAD_COLOR 默认参数,彩色图片,忽略alpha通道;
cv2.IMREAD_GRAYSCALE 灰度图片;
cv2.IMREAD_UNCHANGED 完成图片,包括alpha通道;
显示图像
cv2.imshow(wname,img)
wname: 显示图片的窗口名称
img: 显示的imread读入的图片
保存图像
cv2.imwrite(file,img,num)
file: 要保存的文件名
img: 要保存的图像
num: 压缩级别, 默认为3(对于JPEG,可用0-100整数调整图像质量,默认为95)
图像颜色空间转换
cv2.cvtColor()
ps: img = cv2.cvtColor(img, toImg)
img: 原来图像
toImg: cv2.COLOR_‘X’2‘Y’: X,Y = RGB,BGR,GRAY,HSV,YCrCb,XYZ,Lab,Luv,HLS;
ps: cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
图像大小变更
cv2.resize(src,newImg,dsize)
src: 原来图像
newImg: 将生成的图像(可省略)
dsize: 转换后的大小 ps: cv2.resize(src,(x,y)) x:列,y:行
cv2.resize(src,dsize,fx,fy) # dsize或fx,fy, 两者设置其一即可
fx,fy: 以1为基础的倍数,用来放大缩小,fx: 水平方向, fy: 垂直方向
ps: b=cv2.resize(a,None,fx=0.5,fy=0.7)
图像翻转
cv2.flip(img,flipcode)
img: 用于翻转的图像
flipcode: 翻转的方式: flipcode = 0: 沿x轴翻转(上下翻转);
flipcode < 0: 沿x,y轴同时翻转;
flipcode > 0: 沿y轴翻转(左右翻转);
阈值分割
retval, dst = cv2.threshold(src,thresh,maxval,type)
retval: 阈值 src: 原图像
dst: 处理结果 thresh(threshold): 阈值
maxval: 最大值
type: 类型 cv2.THRESH_BINARY 二进制阈值化(阈值上变maxval下变0)
cv2.THRESH_BINARY_INV 反二进制阈值化(阈值上变0下变maxval)
cv2.THRESH_TRUNC 截断阈值化(阈值上变阈值) 亮转阈值
cv2.THRESH_TOZERO_INV 反阈值化为0(阈值上变0) 亮变0
cv2.THRESH_TOZERO 阈值化为0(阈值下变0) 暗变0
滤波
均值滤波
cv2.blur(img,coreSize)
img: 原图像
coreSize: 核大小: (x,y): x:高度,y:宽度
ps: newImg = cv2.blur(img,(5,5))
方框滤波
res = cv2.boxFilter(img,deep,coreSize,normalize)
res: 处理结果 img: 原图像
deep: 目标图像深度: int类型的目标图像深度,用"-1"表示与原始图像一致
core Size: 核大小 (x,y)
normalize: 是否对目标图像进行归一化处理
ps: r = cv2.boxFilter(img,-1,(5,5),normalize=1)
与 r = cv2.blur(img,(5,5)) 和 r = cv2.boxFilter(img,-1,(5,5))相同
高斯滤波
cv2.GaussianBlur(src,ksize,sigmaX)
src: 原图片
ksize: 核大小 (N,N): N必须为奇数
sigmaX: x方向方差,控制权重 sigmaX=0时: sigma = 0.3*((ksize-1)*0.5-1)+0.8
ps: dst = cv2.GaussianBlur(img,(3,3),0)
中值滤波
cv2.medianBlur(src,ksize)
src: 原图片
ksize: 核大小(奇数)
ps: r = cv2.medianBlur(img,3)
图像处理
图像腐蚀
cv2.erode(src,kernel,iterations)
src: 原图像
kernel: 卷积核 kernel = np.ones((5,5),np.uint8) 5行5列全为1的数组, np.uint8表整形数据类型
iterations: 迭代次数, 默认为1
图像膨胀
cv2.dilate(src,kernel,iterations)
与图像腐蚀相同的参数,可以先腐蚀然后膨胀去除毛边(开运算)。
开运算
cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
img: 原图像
cv2.MORPH_OPEN: 进行开运算
kernel: 卷积核: kernel = np.ones((5,5),np.uint8) 卷积核变大,腐蚀膨胀更厉害
闭运算
cv2.morphologyEX(img,cv2.MORPH_CLOSE,kernel)
(膨胀后腐蚀)
与开运算对立但公式相同,根据第二个参数不同来区分, cv.MORPH_CLOSE:闭; cv.MORPH_OPEN:开
梯度运算
cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
同属于morpholpgyEx公式, 不同的是第二个参数设置为梯度运算, 值为原图片膨胀减去原图片腐蚀
礼貌运算
cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
(只获取噪声: 原图像减去开运算图像)
黑帽运算
cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
(取反噪声: 闭运算减去原图像)