如何用循环实现Python调用Google Cloud Vision批量分析文件夹图片
解决方案
以下是实现批量处理文件夹图片并保存结果到CSV的完整代码:
import os import io import pandas as pd from google.cloud import vision # 初始化Vision API客户端 client = vision.ImageAnnotatorClient() # 定义单张图片检测函数 def process_image(image_path, file_name): with io.open(image_path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.label_detection(image=image, max_results=100) labels = response.label_annotations # 收集当前图片的标签结果 results = [] for label in labels: results.append({ '图片名': file_name, '描述': label.description, '分数': label.score, 'topicality': label.topicality }) return results # 替换为你的目标文件夹路径 target_folder = r'.\save_img' # 存储所有图片的检测结果 all_results = [] # 遍历文件夹内的图片文件 for file_name in os.listdir(target_folder): # 过滤常见图片格式,可按需添加其他格式 if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')): image_path = os.path.join(target_folder, file_name) image_results = process_image(image_path, file_name) all_results.extend(image_results) # 转换为DataFrame并保存到CSV df = pd.DataFrame(all_results) df.to_csv('图片标签检测结果.csv', index=False, encoding='utf-8-sig') print(f"处理完成,共生成{len(all_results)}条标签记录,已保存至图片标签检测结果.csv")
关键说明
- 函数封装:将单图检测逻辑封装成
process_image函数,让循环代码更简洁,也方便后续修改单图处理逻辑。 - 文件夹遍历:通过
os.listdir获取文件夹内所有文件,用后缀名过滤非图片文件,避免无效处理。 - 路径处理:用
os.path.join拼接路径,避免手动拼接时的转义错误和跨平台兼容性问题。 - 结果收集:用列表统一收集所有结果后再转成DataFrame,比原代码中逐次
df.append效率更高(df.append已被pandas弃用)。 - CSV编码:指定
encoding='utf-8-sig'可避免中文内容乱码。
内容的提问来源于stack exchange,提问作者Sunghee
相关产品推荐
相关产品推荐

