# 图像处理
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()
图像处理OpenCV
最新推荐文章于 2024-09-28 01:00:00 发布
400

被折叠的 条评论
为什么被折叠?



