opencv 图像处理:/滤波/腐蚀与膨胀/梯度/礼帽与黑帽,tophat,blackhat
opencv 图像处理/滤波
import cv2 import matplotlib.pyplot as plt import numpy as np img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg')#读取文件 #平滑处理,即对图像进行滤波操作 #均值滤波,及规划化;或非均值滤波 mini1=cv2.boxFilter(img,-1,(3,3),normalize=True) #cv2.imshow('a',mini1) #高斯滤波 mini2=cv2.GaussianBlur(img,(3,3),1) #cv2.imshow('b',mini2) #中值滤波(清晰) mini3=cv2.medianBlur(img,3) #cv2.imshow('c',mini3) #拼接展示 hstack=np.hstack((mini1,mini2,mini3)) print(mini3.shape,hstack.shape) #cv2.namedWindow('hstack',cv2.WINDOW_AUTOSIZE) cv2.imshow('hstack',hstack) cv2.waitKey(0)#0表示按键盘任意键后执行下一行;若是其他数字如1000,则以毫秒级计时后执行下一行. cv2.destroyAllWindows()
形态学处理方法,腐蚀与膨胀
import cv2 import matplotlib.pyplot as plt import numpy as np img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg')#读取文件 #形态学,形态学图像处理(简称形态学)是指一系列处理图像形状特征的图像处理技术。 #形态学的基本思想是利用一种特殊的结构元来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。 #形态学方法的基础是集合论。 #腐蚀操作,黑色侵蚀白色。对去除白噪声很有用。 kernel=np.ones((3,3),dtype=np.uint8) erode=cv2.erode(img,kernel,iterations=1) cv2.imshow('erode',erode) cv2.waitKey(1000)#0表示按键盘任意键后执行下一行;若是其他数字如1000,则以毫秒级计时后执行下一行. cv2.destroyAllWindows() #膨胀操作 di_kernel=np.ones((3,3),dtype=np.uint8) dilate=cv2.dilate(erode,di_kernel,iterations=1) cv2.imshow('dilate',dilate) cv2.waitKey(1000)#0表示按键盘任意键后执行下一行;若是其他数字如1000,则以毫秒级计时后执行下一行. cv2.destroyAllWindows() #开运算:先腐蚀后膨胀 opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel) #闭运算,先膨胀再腐蚀 close=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel) RES=np.hstack((opening,close)) cv2.imshow('RES',RES) cv2.waitKey(0)#0表示按键盘任意键后执行下一行;若是其他数字如1000,则以毫秒级计时后执行下一行. cv2.destroyAllWindows()
腐蚀-膨胀
原图,开运算与闭运算结果
梯度:获取边界信息
import cv2 import matplotlib.pyplot as plt import numpy as np img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg')#读取文件 kernel=np.ones((3,3),dtype=np.uint8) erode=cv2.erode(img,kernel,iterations=1) di_kernel=np.ones((3,3),dtype=np.uint8) dilate=cv2.dilate(img,di_kernel,iterations=1) gradient=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel) RES=np.hstack((img,dilate,erode,gradient)) cv2.imshow('RES',RES) cv2.waitKey(0)#0表示按键盘任意键后执行下一行;若是其他数字如1000,则以毫秒级计时后执行下一行. cv2.destroyAllWindows()
礼帽与黑帽
import cv2 import matplotlib.pyplot as plt import numpy as np img=cv2.imread('C:/Users/59925/Desktop/pytest/pics/minions-s.jpg') kernel=np.ones((3,3),dtype=np.uint8) #开运算:先腐蚀后膨胀 opening=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel) #闭运算,先膨胀再腐蚀 close=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel) #tophat,原始输入-开运算结果 #blackhat,闭运算结果-原始输入 tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel) blackhat=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel) RES=np.hstack((img,opening,close,tophat,blackhat)) cv2.imshow('RES',RES) cv2.waitKey(0) cv2.destroyAllWindows()