python批量图像骨架提取

参考文章:OpenCV—python 图片细化(骨架提取)
安装库pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple

import cv2
from skimage import morphology
import numpy as np
import os
rootdir=r'E:/cover'
print(rootdir)
list=os.listdir(rootdir)
for i in range (len(list)):
    path=os.path.join(rootdir,list[i])
    if os.path.isfile(path):
        print(path)

        image_name=path.split('/')[1].split('\\')[1]
        print(image_name)
        inputroot=rootdir+'/'
        print(inputroot+image_name)
        input_path=inputroot+image_name

        #读取图像
        img = cv2.imread(input_path,0)
        _,binary = cv2.threshold(img,200,255,cv2.THRESH_BINARY_INV)
        。。。

后续代码跳转python彩色图像骨架提取

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是使用Python和OpenCV库实现将骨架图像进行曲线拟合和批量图片输入和输出的示例代码: ```python import cv2 import numpy as np import os # 定义曲线拟合函数 def fit_curve(points, degree): # 获得x、y坐标 x = points[:, 0] y = points[:, 1] # 多项式拟合 z = np.polyfit(x, y, degree) f = np.poly1d(z) # 生成新的坐标点 new_points = np.zeros((len(x), 2)) new_points[:, 0] = x new_points[:, 1] = f(x) return new_points # 定义批量处理函数 def batch_process(input_folder, output_folder, degree): # 检查输出文件夹是否存在,若不存在则创建 if not os.path.exists(output_folder): os.makedirs(output_folder) # 遍历输入文件夹中所有图像 for filename in os.listdir(input_folder): if filename.endswith('.png') or filename.endswith('.jpg'): # 读取图像 img = cv2.imread(os.path.join(input_folder, filename), cv2.IMREAD_GRAYSCALE) # 骨架化 skel = cv2.ximgproc.thinning(img) # 提取骨架像素坐标 points = np.transpose(np.nonzero(skel)) # 曲线拟合 new_points = fit_curve(points, degree) # 绘制曲线 curve_img = np.zeros_like(img) for point in new_points: curve_img[int(point[1]), int(point[0])] = 255 # 保存结果 cv2.imwrite(os.path.join(output_folder, filename), curve_img) # 测试 batch_process('input_folder', 'output_folder', 3) ``` 在上面的代码中,`fit_curve`函数用于进行曲线拟合,`batch_process`用于批量处理图像。其中,`input_folder`和`output_folder`分别为输入和输出文件夹路径,`degree`为多项式拟合的阶数。测试时,只需将`input_folder`和`output_folder`替换为实际的文件夹路径即可。 需要注意的是,本代码仅对二值化的骨架图像进行曲线拟合,若要对其他类型的图像进行处理,需要先进行二值化和骨架化处理。另外,多项式拟合的阶数越高,曲线拟合的精度越高,但也越容易出现过拟合的情况。因此,需要根据实际情况选择合适的阶数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值