1、imread
按照用于BGR读入图像 x = cv2.imread(path,flag) path:路径,可以是相对路径,也可以是觉得路径,按时路径命中不可以出现中文。 flag: cv2.IMREAD_COLOR:读入彩色图像(可以直接写1) cv2.IMREAD_GRAYSCALE:读入灰度图像(可以直接写0) cv2.IMREAD_COLOR:和alpha通道有关...(可以直接写-1) 读入的图像格式:(height,weight,channel)
2、resize更改图像的shape
out = cv2.resize(src,dsize) src 输入图片 dsize 输出图片尺寸
3、addWeighted (图像融合,)
该函数是将两张相同大小,相同类型的图片融合的函数。 数学原理:out = x_weight*x+y_weight*y+gamma 其中x_weight和y_weight分别为图像x和图像y的权重,取值小于1 gamma用于给整体添加亮度。如果gamma取值为255的话,那就一白色了。 out = cv2.addWeighted(x,x_weight,y,y_Weight,gamma) out就是融合后的图像了。
4、imshow
用于展示图像 cv2.imshow(name,image) cv2.waitKey(0)#参数0表示按任意键可以关闭窗口,传入其他数字可以让图像在一定时间内自动关闭 cv2.destroyAllWindows()
5、imwrite
用于保存图像 cv2.imwrite(path+name.jpg/png,image) 将图像image命名为name.jpg/png,并保存在path目录中
6、cvtColor
将读入的BGR转换为灰度图或者RGB cv2.cvtColor(p1,p2)p1是需要转换的图片,p2是转换成何种格式。 cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式 cv2.COLOR_BGR2GRAY 将BGR格式转换为灰度图像
7、cv2.flip()
图像翻转函数,数学原理是基于矩阵的操作, cv2.flip(src, flipCode[, dst]) # src为要操作的图像 flipCode = 1 水平翻转(就是将矩阵的每一行翻转) flipCode = 0 垂直翻转(将矩阵的每一列翻转) flipCode = -1 水平垂直翻转(同时将矩阵的每一行每一列进行翻转)
8、VideoCapture
vc = cv2.VidepCapture(path),可以打开mp4文件 判断成功打开 vc.isOpened() 如果是True的话,说明成功打开,否则打开失败
9、vc.read()用来读取 每一帧的图像
open,frame = vc.read() 其中open是一个bool型的变量,用来表示是否成功获取当前帧。 frame用来保存当前帧,视频结束后frame = None
10、cv2.split()用于图像的通道的分割
注意OpenCV按照BGR的格式读入图像 B,G,R = cv2.split(img) 等价于B = img[:,:,0],G = img[:,:,1],R = img[:,:,2]
11、cv2.merge(),与split对应,用于图像通道的合成
img = cv2.merge((b,g,r))
12、边缘填充函数 cv2.copyMakeBorder
可以用于给图像设置一个边框,也常常用在卷积操作中,用来扩充矩阵数据,使矩阵的shape不变。 out = cv2.copyMakeBorder(src,top,bottom,left,right,borderType = ) src是待修改的图像。 top,bottom,left,right表示向四个方向的扩充大小。 borderType的取值 cv2.BORDER_CONSTANT,后边需要加一个value,就是手动设置填充值(value) cv2.BORDER_REFLECT ,镜面反射。 cv2.BORDER_DEFAULT(或者cv2.BORDER_REFLECT_101)也是镜面反射,但是和上边得又有所不同。 cv2.BORDER_WRAP
13、cv2.add cv中的图像加法
可加的前提是shape要相同 img = img1 + img2,直接相加是做的是numpy数组的加法,得到像素值应该是 img = (img1 + img2) % 256 img = cv2.add(img1,img2)这个是cv2中的图像加法,做的操作相当于img = min(255,img1+img2)
14、cv2.threshold(src,thresh,maxval,type)
阈值操作 ret,dst = cv2.threshold(src,thresh,maxval,type) 其中ret = float(thresh),就是浮点化的阈值。 dst是操作后返回的图像 src是待处理的图像 thresh是输入的阈值 maxval是待填充色值。 type是阈值操作的操作类型 type的取值可以有以下几种: • cv2.THRESH_BINARY(黑白二值)(大于阈值的置位maxval,小于阈值的置位0) • cv2.THRESH_BINARY_INV(黑白二值反转)与第一个刚好相反 • cv2.THRESH_TRUNC 大于阈值的像素值设置为阈值,否则不变 • cv2.THRESH_TOZERO 大于阈值的像素值不变,小于的置为0 • cv2.THRESH_TOZERO_INV 与上一个刚好相反(大于阈值的为0,小的不变)
15、几种滤波操作
高斯滤波模板实现原理
均值滤波 :模板与图像做卷积操作后取平均值来代替模板中心的灰度值 cv2.blur(src,ksize),其中src是原图像,ksize指kernelsize,为奇数 高斯滤波 :模板邻域内不同位置的像素会被赋予不同的权值,高斯模板是通过高斯函数得到的。 cv2.GaussianBlur(src,ksize,sigmaX) sigmaX表示的是在X方向的标准差 中值滤波 :使用模板返回内图像像素值的中值作为模板的中心值。 cv2.medianBlur(src,ksize) 具体使用哪种滤波,ksize为多少,可以都实验一下,然后进行择优。可以使用np.hstack()进行平铺比较



