opencv简单的图像处理--新手入门(8)图像形态学操作

目录

 

一、图像腐蚀

简单理论

函数erode

二、图像膨胀

用处

函数dilate

三、开运算

四、闭运算


一、图像腐蚀

简单理论

形态学里转换主要是针对二值图像

两个输入对象:二值图像,卷积核

opencv简单的图像处理--新手入门(8)图像形态学操作_第1张图片

卷积核的中心点从左到右逐个像素扫描原始图像

opencv简单的图像处理--新手入门(8)图像形态学操作_第2张图片

被扫描的原始图像中的像素点,只有当卷积核对应的元素值均为1(白色)时,其值才为1(白色),否则为0(黑色)

函数erode

cv2.erode(scr,kernel,iterations)

scr:原始图像

kernel:卷积核,正方形,生成方式np.ones((5,5),np.uint8)

iteration:迭代次数,默认为1

import cv2
import numpy as np

img1=cv2.imread("/Users/admin/Desktop/opencv/erode.bmp",cv2.IMREAD_UNCHANGED)
img=cv2.resize(img1,None,fx=0.5,fy=0.5)
k=np.ones((5,5),np.uint8)
result1=cv2.erode(img,k,iterations=1)
result3=cv2.erode(img,k,iterations=3)
cv2.imshow('original', img)
cv2.imshow('result1', result1)
cv2.imshow('result3', result3)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv简单的图像处理--新手入门(8)图像形态学操作_第3张图片

经过一次腐蚀,原始图像上的毛刺基本没有了,而且图像比原来瘦了一点,

经过三次腐蚀以后图像明显瘦了很多

二、图像膨胀

就是腐蚀操作的逆操作

用处:

图像去噪腐蚀以后,原始图像发生改变

膨胀就是把图像返回原始的样子

同腐蚀操作,

形态学里转换主要是针对二值图像

两个输入对象:二值图像,卷积核

被扫描的原始图像中的像素点,只有当卷积核对应的元素值只要有一个为1(白色)时,其值就为1(白色),否则为0(黑色)

函数dilate

cv2.dilate(scr,kernel,iterations)

scr:原始图像

kernel:卷积核,正方形,生成方式np.ones((5,5),np.uint8)

iteration:迭代次数,默认为1

import cv2
import numpy as np

img1=cv2.imread("/Users/admin/Desktop/opencv/erode.bmp",cv2.IMREAD_UNCHANGED)
img=cv2.resize(img1,None,fx=0.6,fy=0.6)
k=np.ones((5,5),np.uint8)
result_f=cv2.erode(img,k,iterations=3)
result_p=cv2.dilate(result_f,k,iterations=3)
cv2.imshow('original', img)
cv2.imshow('result_f', result_f)
cv2.imshow('result_p', result_p)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv简单的图像处理--新手入门(8)图像形态学操作_第4张图片

三、开运算

开运算就是先腐蚀再膨胀,去掉噪声在还原

cv2.morphologyEx(img,cv2.MORPH_OPEN, kernel)

cv2.MORPH_OPEN:开运算

import cv2
import numpy as np

img1=cv2.imread("/Users/admin/Desktop/opencv/erode.bmp",cv2.IMREAD_UNCHANGED)
img=cv2.resize(img1,None,fx=0.6,fy=0.6)
kernel=np.ones((5,5),np.uint8)
result=cv2.morphologyEx(img,cv2.MORPH_OPEN, kernel)
cv2.imshow('original', img)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv简单的图像处理--新手入门(8)图像形态学操作_第5张图片

 

四、闭运算

就是开运算的逆操作

先膨胀再腐蚀

cv2.morphologyEx(img,cv2.MORPH_CLOSE, kernel)

cv2.MORPH_CLOSE:开运算

import cv2
import numpy as np

img1=cv2.imread("/Users/admin/Desktop/opencv/blackhat.bmp",cv2.IMREAD_UNCHANGED)
img=cv2.resize(img1,None,fx=0.6,fy=0.6)
kernel1=np.ones((5,5),np.uint8)
kernel2=np.ones((10,10),np.uint8)
result1=cv2.morphologyEx(img,cv2.MORPH_CLOSE, kernel1)
result2=cv2.morphologyEx(img,cv2.MORPH_CLOSE, kernel2)
cv2.imshow('original', img)
cv2.imshow('result1', result1)
cv2.imshow('result2', result2)
cv2.waitKey(0)
cv2.destroyAllWindows()

opencv简单的图像处理--新手入门(8)图像形态学操作_第6张图片

可以通过改变核函数的大小来调节最终的效果

 

 

 

 

 

 

你可能感兴趣的:(opencv图像处理,opencv图像处理)