用python实现将 骨架化的图像的点用曲线连接起来 批量图片输入和批量图片保存
时间: 2024-05-14 21:12:10 浏览: 112
对python cv2批量灰度图片并保存的实例讲解
5星 · 资源好评率100%
以下是一个简单的示例代码,实现了将骨架化图像的点用曲线连接起来,并批量读取和保存图像。
```python
import cv2
import numpy as np
import os
# 定义连接骨架点的函数
def connect_points(img, points):
for i in range(len(points)-1):
p1 = points[i]
p2 = points[i+1]
cv2.line(img, tuple(p1), tuple(p2), 255, thickness=1)
# 定义批量处理函数
def process_images(input_folder, output_folder):
# 遍历输入文件夹中的所有图像
for filename in os.listdir(input_folder):
if filename.endswith(".png"):
# 读取图像
img = cv2.imread(os.path.join(input_folder, filename), cv2.IMREAD_GRAYSCALE)
# 骨架化处理
skel = cv2.ximgproc.thinning(img)
# 查找骨架上的点
skel_points = np.transpose(np.nonzero(skel))
# 连接骨架点
skel_lines = np.zeros_like(skel)
connect_points(skel_lines, skel_points)
# 保存图像
cv2.imwrite(os.path.join(output_folder, filename), skel_lines)
# 测试
input_folder = "input_folder"
output_folder = "output_folder"
process_images(input_folder, output_folder)
```
在上面的示例代码中,我们首先定义了一个`connect_points`函数,用于连接骨架化图像的点。该函数接受两个参数,一个是骨架化图像,另一个是骨架点的坐标数组。在函数内部,我们使用`cv2.line`函数将相邻的骨架点连接起来。
接下来,我们定义了一个`process_images`函数,用于批量读取和保存图像。该函数接受两个参数,一个是输入文件夹路径,另一个是输出文件夹路径。在函数内部,我们使用`os.listdir`函数遍历输入文件夹中的所有图像,然后依次进行骨架化处理和骨架点连接操作。最后,我们使用`cv2.imwrite`函数将结果保存到输出文件夹中。
要使用该代码,您需要将输入文件夹中的所有图像保存为`.png`格式,并将输入文件夹和输出文件夹的路径分别替换为实际的路径。
阅读全文