首页 > 其他分享 >opencv的骨架提取代码实现

opencv的骨架提取代码实现

时间:2024-12-12 22:33:36浏览次数:4  
标签:提取 skeleton cv2 dst 骨架 opencv 图像 np

opencv实现图像骨架提取

文章目录

  • 一.图像骨架提取
  • 二.ximgproc.thinning
  • 三.使用腐蚀和开运算实现

一.图像骨架提取

骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。

二.ximgproc.thinning

下载包opencv-contrib-python,更新到最新版本,即可使用ximgproc.thinning。关于部分帖子说opencv-contrib-python和python-opencv不能共存实为谬论。

import cv2
import numpy as np

img = cv2.imread('filename', 0)
skeleton = np.zeros_like(img)
skeleton = cv2.ximgproc.thinning(img, skeleton)
cv2.imshow("filename",skeleton)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果如图:

原图
提取骨架后图片

三.使用腐蚀和开运算实现

对一个图像不断腐蚀直到为空,在每次腐蚀过程中执行如下步骤:

1.对腐蚀的图像进行开运算,

2.用开运算前的图像减去开运算后的图像,

3.将步骤2得到的图像累加,

步骤3中累加的图案即为骨架。

import cv2
import numpy as np

img = cv2.imread('filename', cv2.IMREAD_GRAYSCALE)
dst = img.copy()

skeleton = np.zeros(dst.shape, np.uint8)
while True:
    if np.sum(dst) == 0:
        break
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))
    # 腐蚀
    dst = cv2.erode(dst, kernel)
    # 开运算
    open_dst = cv2.morphologyEx(dst, cv2.MORPH_OPEN, kernel)
    # 原图像减去开运算
    result = dst - open_dst
    # 累加
    skeleton = skeleton + result
cv2.imwrite("filename", skeleton)
使用腐蚀和开运算得到的骨架

标签:提取,skeleton,cv2,dst,骨架,opencv,图像,np
From: https://blog.csdn.net/smile_ded/article/details/144436802

相关文章

  • YOLOv11融合[CVPR2024]EMCAD中的特征提取模块及相关改进思路
    YOLOv11v10v8使用教程:  YOLOv11入门到入土使用教程YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《EMCAD:EfficientMulti-scaleConvolutionalAttentionDecodingforMedicalImageSegmentation》一、模块介绍    论文链接:https://arxiv.org/pdf/2......
  • RT-DETR融合[CVPR2024]EMCAD中的特征提取模块及相关改进思路
    RT-DETR使用教程: RT-DETR使用教程RT-DETR改进汇总贴:RT-DETR更新汇总贴《EMCAD:EfficientMulti-scaleConvolutionalAttentionDecodingforMedicalImageSegmentation》一、模块介绍    论文链接:https://arxiv.org/pdf/2405.06880    代码......
  • PTA 7-2 从身份证号码中提取出出生年月
    分数12作者 崔孝凤单位 山东理工大学输入一个18位的身份证号码,提取出年份和月份并输出,请判断输入的号码是否是18位,如果不是请提示"Invaliddata,inputagain!",并重新输入新的号码。输入格式:输入一个18位的身份证号码。输出格式:在一行中输出出生年和月份,中间用逗号......
  • 利用OpenCV和Numpy实现图像校正
    实验原理图像透视变换是一种几何变换,它能够将图像中的点从一个平面映射到另一个平面,通常用于校正图像中的透视失真或者创建特殊的视觉效果。在计算机视觉和图像处理中,透视变换可以通过找到一组对应点(原图中的点和目标图中的点)并计算透视变换矩阵来实现。透视变换的关键步骤:......
  • opencv - py_photo - py_inpainting 图像修复
    文章目录图像修复目标基础知识代码其他资源练习图像修复目标在本章中,我们将学习如何通过一种称为修复的方法去除旧照片中的小噪音、笔触等我们将看到OpenCV中的修复功能。基础知识你们大多数人家里都会有一些旧的劣化照片,上面有一些黑点、一些笔触等。你有......
  • Python OpenCV按照像素点图片切割
    图像分割是从图像处理到图像分析的关键步骤,在目标检测、特征提取、图像识别等领域具有广泛应用。OpenCV是一个强大的计算机视觉库,提供了多种图像分割方法。本文将详细介绍如何使用Python和OpenCV进行基于像素点的图像分割,包括阈值分割、自适应阈值分割、Otsu's二值化、分水岭算法......
  • OpenCV的简单函数
    一、二值化(threshold)1.二值化图二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。2.实现方法,函数阈值法(THRESH_BINARY)反阈值法(THRESH_BINARY_INV)截断阈值法(THRESH_TRUNC):低阈值零处理(THRESH_TOZERO)超阈值零处理(THRESH_TOZERO_INV)OTSU阈......
  • 如何有效处理长文本进行信息提取
    如何有效处理长文本进行信息提取在处理文本文件(如PDF)时,你可能会遇到超出语言模型上下文窗口长度的文本。为了有效处理这些文本,可以考虑以下策略:更换语言模型:选择支持较大上下文窗口的不同语言模型。暴力分块处理:将文档拆分为小块,并从每个块中提取内容。检索增强生成(RAG):将......
  • Sigrity Power DC Package Multi-Resistor Compact ET Model Extraction模式提取封装
    SigrityPowerDCPackageMulti-ResistorCompactETModelExtraction模式提取封装基板电热阻模型SigrityPowerDCPackageMulti-ResistorCompactETModelExtraction模式是用于提取封装基板电热阻模型的,用于使用了这个封装基板的PCB和PKG的联合电仿真和联合热仿真,下面......
  • 安装OpenCV时遇到pip install指令无效的问题
    解决方法:将pipinstallopencv-python改为pip3installopencv-python,即可成功安装。pip和pip3的区别概念方面pip是Python的包管理工具,用于安装和管理Python软件包。它默认是关联到Python2.x版本(如果系统中同时安装了Python2和Python3)。pip3专门用于管理Python3.x版......