如何在Julia中填充图像中的闭合轮廓区域为白色?
Julia中填充闭合轮廓区域的实现方案
方法1:一键填充孔洞(最便捷)
针对你这种黑色背景+白色闭合细圆轮廓的场景,直接用ImageMorphology.jl的fill_holes函数就能搞定,它会自动识别轮廓包围的黑色内部区域并填充为白色:
using Images, ImageMorphology # 生成填充后的图像 img_With_contour_filled_with_white = fill_holes(img)
方法2:手动洪水填充(精准控制)
如果需要自定义填充起始点,可采用洪水填充方式,步骤如下:
- 从已获取的
contour像素坐标中提取轮廓的边界范围; - 选取轮廓内部的一个点作为填充起始点(比如边界框中心);
- 调用
flood_fill!完成填充。
using Images # 提取轮廓的行列范围 rows = [p[1] for p in contour] cols = [p[2] for p in contour] min_r, max_r = extrema(rows) min_c, max_c = extrema(cols) # 确定内部起始点(边界框中心) start_point = ((min_r + max_r) ÷ 2, (min_c + max_c) ÷ 2) # 复制原图避免修改原数据 img_filled = copy(img) # 从起始点填充连通的黑色区域为白色 flood_fill!(img_filled, start_point, 1) # 最终结果 img_With_contour_filled_with_white = img_filled
注意事项
- 确保图像是二值图(像素值为0代表黑色,1代表白色);
- 使用
fill_holes时,必须保证轮廓完全闭合,否则会误填充整个背景; - 洪水填充的起始点要确保在轮廓内部,否则会填充到轮廓外的背景区域。
内容的提问来源于stack exchange,提问作者F612
相关产品推荐
相关产品推荐

