imclearborder与bwareaopen
两个函数介绍python代码小结
两个函数介绍
imclearborder与bwareaopen,是matlab里的功能函数,博客里把他们变成python版本
功能介绍:
imclearborder:删除图像的边界,什么意思呢,就是一张800X600的图片,如果再图片的边缘有半个足球,那么,我们可以指定将周围的一圈像素置为0 具体可以看:资料参考1bwareaopen:删除面积小于x区域的代码,使用连通性删除微小对象BW2 = bwareaopen(BW,P,conn) 第一个参数是图片,P表示删除小于P像素面积的对象,conn表示指定所需的连通性,默认使用8连通区域进行像素归属的判断具体可以参考:mathwork里的说明。
python代码
def imclearborder(imgBW, radius):
# 给定黑白图像,首先找到其所有轮廓
imgBWcopy = imgBW.copy()
contours,hierarchy = cv2.findContours(imgBWcopy.copy(), cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)
# 获取图像尺寸
imgRows = imgBW.shape[0]
imgCols = imgBW.shape[1]
contourList = [] # 接触边界的轮廓的ID列表
# 对每个轮廓进行
for idx in np.arange(len(contours)):
# 得到轮廓
cnt = contours[idx]
# 查看轮廓中的每一个点
for pt in cnt:
rowCnt = pt[0][1]
colCnt = pt[0][0]
# 如果在边界的指定半径内部
# 那么删除这个轮廓
check1 = (rowCnt >= 0 and rowCnt = imgRows-1-radius and rowCnt = 0 and colCnt = imgCols-1-radius and colCnt = 0 and area |