opencv图像处理基础知识

  • 图片处理
  1. 读入图像 ret=cv2.imread(文件名,[显示控制参数])

=>显示控制参数:0代表显示灰度图像,1代表显示彩色图像

imread读取图片的颜色顺序是B->G->R。

2.  显示图像 ret=cv2.imshow(“窗口名”,图像名)

=>cv2.imshow(“demo”, image)

3.  删除所有窗口

=>cv2.destroyAllWindows()

4.  保存图像 ret=cv2.imwrite(文件地址,文件名)

=>cv2.imwrite(“D:\\demo.jpg”,img)

  • 像素处理
  1. 读取像素

返回值=图像(位置参数)

print(i[100,100])

  1. 修改像素

print(i[100,100])  #当前像素信息

i[100,100]=255

print(i[100,100])  #修改过后的像素信息

=>灰度图像:a=img[88,125]  彩色图像:a=img[88,125,0]

3.  利用numpy像素处理

Import numpy as np

print(i.item(100,100))  #读像素

i.itemset((100,100),255)  #修改像素

  • 获取图像属性
  1. 形状 shape

灰度:返回行数,列数

彩色:返回行数,列数,通道数

=>print(img.shape)

2.  像素数目 size

灰度:行*列

彩色:行*列*通道

=>print(img.size)

3.  图像类型 dtype

=>print(img.dtype)

  • 图像ROI

face=a[220:400,250:350]

a[0:180,0:100]=face #将感兴趣的区域复制到左上角

  • 图像加法  add  结果图像=图1+图2

Result=cv2.add(a,b)

  • 图像融合  addWeighted 结果图像=图1*系数1+图2*系数2+亮度调节值

dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)

  • 图像类型转换

#GRAY(灰度图)

gray=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)  #彩色图转灰度图

#HSV(色度,饱和度,纯度)
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)  #彩色图转HSV

  • 图像翻转 flip

dst=cv2.flip(src,flipCode)

flipCode<0 以x轴,y轴同时翻转

flipCode=0 以x轴为对称轴翻转

flipCode>0 以y轴为对称轴翻转

  • 阈值分割
  1. 二进制阈值化

如果选定阈值127,则所有比127大的像素点都变成255,反之,则变成0。

  1. 反二进制阈值化

如果选定阈值127,则所有比127小的像素点都变成255,反之,则变成0。

  1. 截断阈值化

如果选定阈值127,则所有比127小的像素点保持不变,反之,则变成127。

  1. 阈值化

如果选定阈值127,则所有比127大的像素点保持不变,反之,则变成0。

  1. 反阈值化

如果选定阈值127,则所有比127小的像素点保持不变,反之,则变成0。

  • 图像阈值 threshold及实现

ret,dst=cv2.threshold(src,thresh,maxval,type)

src:原图像 thresh:阈值 maxval:最大值 type:类型

类型(type):

1.二进制阈值化 cv2.THRESH_BINARY

2.反二进制阈值化 cv2.THRESH_BINARY_INV

3.截断阈值化 cv2.THRESH_TRUNC

4.阈值化 cv2.THRESH_TOZERO

5.反阈值化 cv2.THRESH_TOZERO_INV

十一、图像平滑——方框滤波 boxFilter函数

处理结果=cv2.boxFilter(原始图,目标图像深度,核大小,normalize属性)

目标图像深度:默认为-1

normalize属性:是否对目标图像进行归一化处理

normalize=0,则不进行归一化处理;normalize=1进行归一化处理,与均值滤波相同

=>result=cv2.boxFilter(demo,-1,(3,3),normalize=1)

十二、图像平滑——高斯滤波 GaussianBlur函数

处理结果=cv2. GaussianBlur(src,ksize,sigmaX)

src :原始图 ksize :核大小(N,N)必须是比1大的奇数 sigmaX :X方向方差,控制权重

=>result=cv2.GaussianBlur(0,(3,3),0)

十三、图像平滑——中值滤波 medianBlur函数

处理结果=cv2.medianBlur(src,ksize)

十四、形态学转换——图像腐蚀 erode 主要针对二值图像

处理结果=cv2.erode(src,kernel,iterations)

kernel:卷积核 iterations:迭代次数(粗细标准)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.erode(demo,k,iterations=10)

十五、形态学转换——图像膨胀 dilate

处理结果=cv2.dilate(src,kernel,iterations)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.dilate(demo,k)

注:图像被腐蚀后,去除了噪声,但是会压缩对腐蚀过的图像,进行膨胀处理,可以去除噪声,并保持原有形状。

十六、形态学转换——开运算

处理结果=cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.morphologyEx (demo, cv2. MORPH_OPEN,k)

十七、形态学转换——闭运算

处理结果=cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.morphologyEx (demo, cv2. MORPH_CLOSE,k)

十八、形态学转换——梯度操作(膨胀图像-腐蚀图像)

处理结果=cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.morphologyEx(demo, cv2.MORPH_GRADIENT,k)               

十九、形态学转换——图像顶帽(原始图像-开运算图像)

处理结果=cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.morphologyEx(demo, cv2.MORPH_TOPHAT,k)

二十、形态学转换——黑帽操作(闭运算图像-原始图像)

处理结果=cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

=>k=np.ones((5,5),np.uint8)

=>result=cv2.morphologyEx(demo, cv2.MORPH_BLACKHAT,k)

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值