python + openCV图像处理(二)

版权声明:博客内容仅参考,如有错误,请不吝指出,在此谢过。 https://blog.csdn.net/zhaiax672/article/details/88792345

13、形态学操作

  • 图像腐蚀、膨胀

原理:
在这里插入图片描述
在这里插入图片描述
腐蚀:
在这里插入图片描述
膨胀:
在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\maoci.png",cv2.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(a,kernel,iterations=9)  # 图像腐蚀

cv2.imwrite(r"C:\workspace\python\openCV\erosion.png",erosion)
dilation = cv2.dilate(erosion,kernel,iterations=9) #图像膨胀

cv2.imshow("a",a) 
cv2.imshow("erosion",erosion)
cv2.imshow("dilation",dilation)

cv2.waitKey()
cv2.destroyAllWindows()


erode(src,kernel,iterations)
dilate(src,kernel,iterations)

其中,src 是目标图像,kernel 是卷积核,iterations 是迭代次数(缺省值为1)

效果图:

在这里插入图片描述


  • 开运算,闭运算,梯度运算

原理:
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

扫描二维码关注公众号,回复: 5656949 查看本文章

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\maoci.png",cv2.IMREAD_UNCHANGED)
kernel = np.ones((10,10),np.uint8)
b = cv2.morphologyEx(a,cv2.MORPH_OPEN,kernel) # 开运算 
# b = cv2.morphologyEx(a,cv2.MORPH_CLOSE,kernel) # 闭运算
# b = cv2.morphologyEx(a,cv2.MORPH_GRADIENT,kernel) # 梯度运算
# b = cv2.morphologyEx(a,cv2.MORPH_TOPHAT,kernel) # 礼帽操作
# b = cv2.morphologyEx(a,cv2.MORPH_BLACKHAT,kernel) #黑帽操作

cv2.imshow("a",a) 
cv2.imshow("b",b)


cv2.waitKey()
cv2.destroyAllWindows()

14、图像梯度

  • sobel算子

原理:
在这里插入图片描述
水平方向:
在这里插入图片描述
竖直方向:

在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)  
sobelx = cv2.Sobel(a,cv2.CV_64F,1,0) # x方向梯度
sobely = cv2.Sobel(a,cv2.CV_64F,0,1) # y方向梯度

sobelx = cv2.convertScaleAbs(sobelx) # x的绝对值
sobely = cv2.convertScaleAbs(sobely) # y的绝对值

sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0) # x与y相加

cv2.imshow("original",a) 
cv2.imshow("xy",sobelxy)


cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述

  • scharr算子

原理:
在这里插入图片描述
在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)  
scharrx = cv2.Scharr(a,cv2.CV_64F,1,0) # x方向梯度
scharry = cv2.Scharr(a,cv2.CV_64F,0,1) # y方向梯度

scharrx = cv2.convertScaleAbs(scharrx) # x的绝对值
scharry = cv2.convertScaleAbs(scharry) # y的绝对值

scharrxy = cv2.addWeighted(scharrx,0.5,scharry,0.5,0) # x与y相加

cv2.imshow("original",a) 
cv2.imshow("xy",scharrxy)


cv2.waitKey()
cv2.destroyAllWindows()

效果图:

注意:小新脸上的红晕也识别出来了
在这里插入图片描述

  • Laplacian算子

原理:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)  
lapiacian = cv2.Laplacian(a,cv2.CV_64F)
lapiacian = cv2.convertScaleAbs(lapiacian) # 转回uint8

cv2.imshow("original",a) 
cv2.imshow("lapiacian",lapiacian)


cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述

14、canny边缘检测
原理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import cv2
import numpy as np

a = cv2.imread(r"C:\workspace\python\openCV\xiaoxin.png",cv2.IMREAD_UNCHANGED)  
b = cv2.Canny(a,100,200) #细节更多的话,同时调低两个参数就行

cv2.imshow("original",a) 
cv2.imshow("result",lapiacian)


cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhaiax672/article/details/88792345