原始图用这个吧:
内边界提取
内边界提取通常可以用原图减去其腐蚀图,代码如下:
import cv2
import numpy as np
I = cv2.imread('D:/Programs/Python/Python36/blob.jpg',0)
ret,img = cv2.threshold(I,127,255,cv2.THRESH_BINARY_INV)
#m,n =img.shape
kernel = np.ones((3,3),np.uint8)
r=cv2.erode(img,kernel,iterations=1)
#边缘提取
e=img-r
cv2.imshow('img',img)
cv2.imshow('erode',r)
cv2.imshow('edge',e)
cv2.imwrite('edge.png',e)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
外边界提取
外边界提取可以用膨胀减去原图:
import cv2
import numpy as np
I = cv2.imread('D:/Programs/Python/Python36/blob.jpg',0)
ret,img = cv2.threshold(I,127,255,cv2.THRESH_BINARY_INV)
#m,n =img.shape
kernel = np.ones((3,3),np.uint8)
d = cv2.dilate(img,kernel,iterations=1)
#边缘提取
e=d-img
cv2.imshow('img',img)
cv2.imshow('erode',d)
cv2.imshow('edge',e)
cv2.imwrite('edge.png',e)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果图如下;