关于opencv当中一些图像运算的函数
import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef qingshi():# 读取图片img = cv.imread("images/j.png")plt.subplot(121)plt.imshow(img)# np.ones()也就是一个N维数租 那么在这个数组当中全都是1# 如果在这个内核范围内都是1的话 那么就都是1 否则的话 会把这个1变成0# 原始图像中的一个像素(无论是1还是0)只有当内核下的所有像素都是1时才被认为是1,否则它就会被侵蚀(变成0)kernel = np.ones((5, 5), np.uint8)# 第一个参数为源地址 第二个为运算也可以不填写采用None代替# iteration的值越高,模糊程度(腐蚀程度)就越高 呈正相关关系erosion = cv.erode(img, kernel, iterations=1)plt.subplot(122)plt.imshow(erosion)plt.show()# 扩张def openArea():# 读取图片img = cv.imread("images/j.png")kernel = np.ones((5, 5), np.uint8)# 如果内核返回当中有一个元素为1那么都是1# 所有他会把元素进行扩张 所以目标区域就增加了变大了dilation = cv.dilate(img, kernel, iterations=1)cv.imshow("test", dilation)cv.waitKey(0)cv.destroyAllWindows()# 开运算def openMorph():img = cv.imread("images/j.png")plt.subplot(121)plt.imshow(img)kernel = np.ones((5, 5), np.uint8)# 开运算 侵蚀后扩张# opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)# 闭运算 先扩张然后侵蚀# opening = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)# 形态学梯度# opening = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)# 输入图像和图像闭运算之差 黑猫opening = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)plt.subplot(122)plt.imshow(opening)plt.show()if __name__ == '__main__':# openArea()openMorph()
