图像处理OpenCV

# 图像处理
import cv2
image = cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
cv2.imshow("test",image)
cv2.waitKey(0)  # 0:无限等待  负数:按键取消  正数:等待秒数
cv2.destroyAllWindows() # 删除所有图像数据,释放内存

# 读取灰度图
image = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
cv2.imshow("test",image)
cv2.waitKey(0)  
cv2.destroyAllWindows() 
print(image.shape)

# plt导入 嵌入显示
%matplotlib inline
from matplotlib import pyplot as plt
img = cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
img2 = img[:,:,::-1]  # 必须为::-1  不加这句会变色
plt.imshow(img2)

# 读取图像,修改部分像素点颜色
image = cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
image[100:150,100:150] = [0,250,0]  # 修改该块为绿色
cv2.imshow("result",image)
cv2.waitKey(0)  
cv2.destroyAllWindows() 

# 通道拆分 (蓝、绿、红)
image = cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
b,g,r = cv2.split(image)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey(0)  
cv2.destroyAllWindows() 

# 通道合并
image = cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
b,g,r = cv2.split(image)
bgr=cv2.merge([b,g,r])
rgb=cv2.merge([r,g,b])
rrb=cv2.merge([r,r,b])
cv2.imshow("bgr",bgr)
cv2.imshow("rgb",rgb)
cv2.imshow("rrb",rrb)
cv2.waitKey(0)  
cv2.destroyAllWindows() 

# 通道加法(2种)
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) #读取灰度图
result1=a+a
result2=cv2.add(a,a)
cv2.imshow("result1",result1)
cv2.imshow("result2",result2)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 图像缩放
a= cv2.imread(r"C:\Users\hp\Desktop\a.jpg")
b= cv2.resize(a,(100,200)) # 注意:(列长度,行长度)
cv2.imshow("original",a)
cv2.imshow("resize",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 通过fx,fy缩放
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
b = cv2.resize(a,None,fx=1.2,fy=0.5)
cv2.imshow("original",a)
cv2.imshow("resize",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 图像翻转--flip(大于0--左右翻转,小于0--上下左右翻转)
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
b = cv2.flip(a,-1)
cv2.imshow("original",a)
cv2.imshow("flip",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

###======= 阈值分割 =========
# 二进制阈值化
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
r,b=cv2.threshold(a,127,255,cv2.THRESH_BINARY)   # 阈值127
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 反二进制阈值化
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
r,b=cv2.threshold(a,127,255,cv2.THRESH_BINARY_INV)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 截断阈值化(亮的变暗)
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
r,b=cv2.threshold(a,127,255,cv2.THRESH_TRUNC)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 反阈值化为0(暗的变亮)
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
r,b=cv2.threshold(a,127,255,cv2.THRESH_TOZERO_INV)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 阈值化为0(暗的变亮)
a = cv2.imread(r"C:\Users\hp\Desktop\a.jpg",cv2.IMREAD_GRAYSCALE) 
r,b=cv2.threshold(a,127,255,cv2.THRESH_TOZERO)
cv2.imshow("a",a)
cv2.imshow("b",b)
cv2.waitKey()  
cv2.destroyAllWindows() 

###======== 图像平滑(有椒盐噪声图片) ============
# 均值滤波:cv2.blur()
o = cv2.imread(r"C:\Users\hp\Desktop\aa.jpg") 
r=cv2.blur(0,(5,5))  # 核(宽度,高度) 数越大,噪声越少,图越模糊
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 方框滤波:cv2.boxFilter()
o = cv2.imread(r"C:\Users\hp\Desktop\aa.jpg") 
r=cv2.boxFilter(o,-1,(2,2),normalize=0)   # normalize=1为均值滤波
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 中值滤波:cv2.medianBlur()
o = cv2.imread(r"C:\Users\hp\Desktop\aa.jpg") 
r=cv2.medianBlur(o,5)   
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 高斯滤波:cv2.GaussianBlur()
o = cv2.imread(r"C:\Users\hp\Desktop\aa.jpg") 
r=cv2.GaussianBlur(o,(5,5),0)   
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()  
cv2.destroyAllWindows() 

###=========== 图像形态学处理(去噪) ==============
# 图像腐蚀(带毛刺的图)
import numpy as np
o = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
kernel=np.ones((5,5),dtype=np.uint8)
erosion=cv2.erode(o,kernel,iterations=1)  # iterations腐蚀次数
cv2.imshow("original",o)
cv2.imshow("result",erosion)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 图像膨胀
o = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
kernel=np.ones((5,5),dtype=np.uint8)
erosion=cv2.dilate(o,kernel,iterations=1)  # iterations腐蚀次数
cv2.imshow("original",o)
cv2.imshow("result",erosion)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 开运算(图外面有噪声)
o = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
kernel=np.ones((5,5),dtype=np.uint8)
opening=cv2.morphologyEx(o,cv2.MORPH_OPEN,iterations=1)  
cv2.imshow("original",o)
cv2.imshow("result",erosion)
cv2.waitKey()  
cv2.destroyAllWindows() 

# 闭运算(图里面有噪声)
o = cv2.imread(r"C:\Users\hp\Desktop\a.jpg") 
kernel=np.ones((5,5),dtype=np.uint8)
closing=cv2.morphologyEx(o,cv2.MORPH_CLOSE,iterations=1)  
cv2.imshow("original",o)
cv2.imshow("result",closing)
cv2.waitKey()  
cv2.destroyAllWindows() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值