python +opencv 遍历文件夹下所有图片,并为每张图片生成一个xml文件,并将图片的分辨率输出到此xml文件中,生成代码
时间: 2024-12-13 07:19:57 浏览: 8
图片批量处理器程序使用-python
在Python中,我们可以使用OpenCV的`cv2.imwrite()`函数读取图片并创建XML文件。不过,OpenCV本身并不直接支持生成XML文件描述图像分辨率,我们需要自定义一些逻辑。这里有一个基础的例子,展示如何遍历文件夹下的图片并保存它们的路径以及分辨率到XML文件中:
```python
import os
import cv2
import xml.etree.ElementTree as ET
def create_xml(image_path):
# 读取图片
img = cv2.imread(image_path)
# 检查图片是否加载成功
if img is None:
return "Failed to load image"
# 获取图片信息,包括宽度、高度和BGR色彩空间的数据
height, width, channels = img.shape
# 创建XML元素
root = ET.Element("image")
resolution_element = ET.SubElement(root, "resolution")
resolution_element.text = f"{width}x{height}"
# 创建文件名元素
filename_element = ET.SubElement(root, "filename")
filename_element.text = os.path.basename(image_path)
# 创建XML文档
tree = ET.ElementTree(root)
xml_content = ET.tostring(root, encoding="utf-8", method="xml").decode()
# 为每张图片生成一个单独的xml文件
output_file_name = os.path.splitext(image_path)[0] + ".xml"
with open(output_file_name, "w") as xml_file:
xml_file.write(xml_content)
return output_file_name
# 定义图片目录
image_dir = "path/to/your/image/folder"
# 遍历文件夹
for filename in os.listdir(image_dir):
if filename.endswith(".jpg") or filename.endswith(".png"): # 只处理常见的图片格式
image_path = os.path.join(image_dir, filename)
create_xml(image_path)
print("Generated XML files for all images in the folder.")
阅读全文