2301_77755930 2024-04-24 21:13 采纳率: 78.6%
浏览 13
已结题

Python,图像处理,骨架线,中轴线

img


利用Python对以上二值图中白色纤维目标进行绘制中轴线,首先对白色纤维目标进行轮廓细化,提取骨架,同时对骨架进行去毛刺处理,然后把骨架线绘制到原图白色纤维目标内部,形成白色纤维目标轮廓内部中间有一条黑色中轴线。

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-24 21:21
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 要解决这个问题,需要以下步骤:
    1. 对白色纤维目标进行轮廓细化,提取骨架;
    2. 对骨架进行去毛刺处理;
    3. 把骨架线绘制到原图白色纤维目标内部,形成白色纤维目标轮廓内部中间有一条黑色中轴线。 解决方案:
    4. 对白色纤维目标进行轮廓细化,提取骨架 通过OpenCV库的函数cv2.threshold()将原始图像变成二值图像,然后使用cv2.ximgproc.thinning()函数将图像进行轮廓细化,提取出骨架。 代码示例:
    import cv2
    # 读取图像
    img = cv2.imread('image.png')
    # 灰度化
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 二值化
    _,thresh = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY_INV)
    # 轮廓细化
    thinning = cv2.ximgproc.thinning(thresh)
    
    1. 对骨架进行去毛刺处理 对于得到的骨架图像,可以使用形态学处理来进行去噪和去毛刺处理,这里采用开运算来实现。 代码示例:
    # 定义卷积核
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
    # 开运算去噪
    opening = cv2.morphologyEx(thinning, cv2.MORPH_OPEN, kernel)
    
    1. 绘制中轴线 通过OpenCV库的函数cv2.findContours()获取骨架的轮廓信息,然后使用cv2.drawContours()函数将骨架绘制到原图白色纤维目标内部,并将颜色设为黑色。 代码示例:
    # 查找轮廓
    contours,_ = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # 绘制轮廓
    img_contours = cv2.drawContours(img, contours, -1, (0,0,0), 2)
    

    完整代码:

    import cv2
    # 读取图像
    img = cv2.imread('image.png')
    # 灰度化
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 二值化
    _,thresh = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY_INV)
    # 轮廓细化
    thinning = cv2.ximgproc.thinning(thresh)
    # 定义卷积核
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
    # 开运算去噪
    opening = cv2.morphologyEx(thinning, cv2.MORPH_OPEN, kernel)
    # 查找轮廓
    contours,_ = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
    # 绘制轮廓
    img_contours = cv2.drawContours(img, contours, -1, (0,0,0), 2)
    # 显示结果
    cv2.imshow('result', img_contours)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    运行截图:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 创建了问题 4月24日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 (求远程解决)深信服vpn-2050这台设备如何配置才能成功联网?