用python实现将骨架化后的图片里的点连成线 打开多张图片进行批量处理和保存到特定文件夹理
时间: 2024-05-08 13:17:50 浏览: 96
批量处理图片并保存至另一个文件夹中
5星 · 资源好评率100%
以下是用Python实现将骨架化后的图片里的点连成线,打开多张图片进行批量处理并将结果保存到特定文件夹的代码示例:
```python
import os
import cv2
# 骨架化函数
def skeletonize(img):
size = np.size(img)
skel = np.zeros(img.shape,np.uint8)
ret,img = cv2.threshold(img,127,255,0)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
done = False
while(not done):
eroded = cv2.erode(img,element)
temp = cv2.dilate(eroded,element)
temp = cv2.subtract(img,temp)
skel = cv2.bitwise_or(skel,temp)
img = eroded.copy()
zeros = size - cv2.countNonZero(img)
if zeros==size:
done = True
return skel
# 连接骨架点函数
def connect_points(img):
contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
for i in range(len(cnt)-1):
cv2.line(img, tuple(cnt[i][0]), tuple(cnt[i+1][0]), 255, 1)
return img
# 批量处理函数
def batch_processing(input_folder, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for file in os.listdir(input_folder):
if file.endswith('.png'):
img = cv2.imread(os.path.join(input_folder, file), cv2.IMREAD_GRAYSCALE)
skel = skeletonize(img)
result = connect_points(skel)
cv2.imwrite(os.path.join(output_folder, file), result)
# 主函数
if __name__ == '__main__':
input_folder = 'input_folder_path'
output_folder = 'output_folder_path'
batch_processing(input_folder, output_folder)
```
使用时需将 `input_folder_path` 和 `output_folder_path` 修改为实际的文件夹路径。其中 `batch_processing` 函数为批量处理函数,可实现对输入文件夹内所有 `.png` 格式的图片进行骨架化、点连接以及保存到输出文件夹内的功能。
阅读全文