(1)首先,我们打开并显示一张彩色图片“image”
image = cv.imread("D:\OpenCV\CVproject\image/lenacolor.png") cv.imshow("image",image)
(2)将得到的彩色图片拆分成b,g,r单通道图片,再进行二值化,在这里我们使用cv.threshold函数,类型为cv.THRESH_BINARY,例如:r,bb = cv.threshold(b,127,255,cv.THRESH_BINARY),其中bb为处理结果,b为原图像,127为阈值,这种方法得到的是二进制阈值化,显示二值化图形bb
b,g,r = cv.split(image)
r1,bb=cv.threshold(b,127,255,cv.THRESH_BINARY) r2,gg=cv.threshold(g,127,255,cv.THRESH_BINARY) r2,rr=cv.threshold(r,127,255,cv.THRESH_BINARY)
接下来,我们分别对b,g,r二值化图像分别进行不同的处理方法
(3)对b图像进行图像腐蚀,作用:去除孤立的点和线,保留主要的轮廓。原理:使用卷积核kernel对图像进行遍历,都是1则此点为1,否则为0。显示腐蚀图形fb
kernel=np.ones((3,3),np.uint8)#创建一个3*3的矩阵,且里面元素全为1 fb = cv.erode(bb,kernel,iterations=1)#iterations=n,n为腐蚀次数 cv.imshow("fb",fb)
同理显示膨胀图像pb
pb = cv.dilate(bb,kernel,iterations=1) cv.imshow("pb",pb)#图像显示
腐蚀表现为白色减少,黑色增加,同理膨胀表示为黑色减少,白色增加。
(4)开运算=膨胀{腐蚀(图像)}:代码openingb = cv.morphologyEx(bb,cv.MORPH_OPEN,kernel) 闭运算=腐蚀{膨胀(图像)}:代码closingb = cv.morphologyEx(bb,cv.MORPH_CLOSE,kernel) 这里opencv提供了许多算法如梯度运算cv.MORPH_GRADIENT,礼帽运算cv.MORPH_TOPHAT等