OpenCV常用函数

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,小的不变)
Otsu(大津)
	自动寻找一个合适的阈值并返回,寻找方法是遍历所有可能的阈值,通过一个公式,计算方差,方差最小的阈值就是选中的阈值。
自适应阈值分割。
	adaptiveThreshold  自适应阈值法,对于某些光照不均的图像,效果好。

15、几种滤波操作
高斯滤波模板实现原理

均值滤波 :模板与图像做卷积操作后取平均值来代替模板中心的灰度值 
cv2.blur(src,ksize),其中src是原图像,ksize指kernelsize,为奇数
高斯滤波 :模板邻域内不同位置的像素会被赋予不同的权值,高斯模板是通过高斯函数得到的。
cv2.GaussianBlur(src,ksize,sigmaX) sigmaX表示的是在X方向的标准差
中值滤波 :使用模板返回内图像像素值的中值作为模板的中心值。
cv2.medianBlur(src,ksize)
具体使用哪种滤波,ksize为多少,可以都实验一下,然后进行择优。可以使用np.hstack()进行平铺比较
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值