机关门户网站 建设 方案,自己想做个网站怎么做的,如何做建筑一体化的网站,电商网站创办过程这段代码的作用是从指定路径读取图像和标签文件#xff0c;然后在图像上绘制分割区域和相关点#xff0c;并保存最终的图像。以下是每个函数的具体作用及其解释#xff1a; read_labels(label_path): 读取指定路径的标签文件。标签文件的每一行表示一个物体的分割信息#…这段代码的作用是从指定路径读取图像和标签文件然后在图像上绘制分割区域和相关点并保存最终的图像。以下是每个函数的具体作用及其解释 read_labels(label_path): 读取指定路径的标签文件。标签文件的每一行表示一个物体的分割信息包含类别ID和多个坐标点归一化的x, y值。返回一个列表每个元素是一个元组包含类别ID和坐标点。 random_color(): 生成一个随机颜色用于绘制分割区域和边界。 draw_segmentation(image, labels): 接受一个图像和标签信息在图像上绘制分割区域、边界和点。对于每个标签先将归一化坐标转换为实际像素坐标然后用随机颜色绘制多边形和边界最后绘制点。使用cv2.addWeighted函数将绘制的分割区域和原始图像进行融合产生半透明效果。 主程序部分: 指定图像路径并推导对应的标签文件路径。读取图像和标签。调用draw_segmentation函数在图像上绘制分割区域。保存最终绘制后的图像。
改进和优化建议
错误处理: 增加对文件读取和解析的错误处理以避免程序崩溃。颜色透明度: 透明度设置硬编码为100可以将其作为可配置参数传入函数。文件路径: 路径处理方式可以更灵活以适应更多的文件组织结构。
完整的改进代码示例
import cv2
import numpy as np
import random
import osdef read_labels(label_path):with open(label_path, r) as file:lines file.readlines()labels []for line in lines:parts list(map(float, line.strip().split()))class_id int(parts[0])points np.array(parts[1:]).reshape(-1, 2)labels.append((class_id, points))return labelsdef random_color():return [random.randint(0, 255) for _ in range(3)]def draw_segmentation(image, labels, alpha0.4, color_transparency100):overlay image.copy()for class_id, points in labels:# Convert normalized coordinates to absolute pixel valuespoints[:, 0] * image.shape[1]points[:, 1] * image.shape[0]points points.astype(int)# Draw filled polygon with random colorcolor random_color()cv2.fillPoly(overlay, [points], color [color_transparency]) # 100 for transparency# Draw edges and pointscv2.polylines(image, [points], isClosedTrue, colorcolor, thickness2)for point in points:cv2.circle(image, tuple(point), 3, color, -1)# Combine original image with overlaycv2.addWeighted(overlay, alpha, image, 1 - alpha, 0, image)return image# Paths
image_path r/ssd/xiedong/lightyolov5/yolo-seg/coco8-seg/images/train/000000000009.jpg
label_path image_path.replace(images, labels).replace(.jpg, .txt)# Ensure paths exist
if not os.path.exists(image_path):raise FileNotFoundError(fImage file not found: {image_path})
if not os.path.exists(label_path):raise FileNotFoundError(fLabel file not found: {label_path})# Read image and labels
image cv2.imread(image_path)
labels read_labels(label_path)# Draw segmentation on the image
segmented_image draw_segmentation(image, labels)# Save the result
output_path segmented_image1.png
cv2.imwrite(output_path, segmented_image)
print(fSegmented image saved to {output_path})改进点
增加了对文件路径存在性的检查避免文件不存在时程序崩溃。将透明度参数和颜色透明度参数外部化增加函数的灵活性。在保存结果图像时打印保存路径方便用户确认保存位置。 问询、帮助
你如果需要帮助请看这里
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tabBB08J2