一、具体情况
使用YOLO推理,打算将推理结果目标区域截取保存到本地
代码:
#可能存在多个人体,提取置信度最高的人体框
def extract_person(image, box_data):
image = np.squeeze(image, axis=0) # 形状变为 (3, 640, 640)
# 转换为 (H, W, C) 格式
image = np.transpose(image, (1, 2, 0))
print(f"Resized image shape: {image.shape}")
cv2.imshow('read Image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
boxes = box_data[..., :4].astype(np.int32)
scores = box_data[..., 4]
classes = box_data[..., 5].astype(np.int32)
if len(boxes) > 0:
max_index = np.argmax(scores)
#top, left, right, bottom = boxes[max_index]
left,top, right, bottom = boxes[max_index]
# 打印原始坐标
print(f"Original Box coordinates: top={top}, left={left}, right={right}, bottom={bottom}")
# 提取目标区域
person = image[top:bottom, left:right]
print(f"Extracted person image size: {person.shape}")
cv2.imshow('extracted person',person)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite('extract.png', person*255)
return person
输出结果显示,正常截取
输出的图片也能正常显示,
可是!
打开保存图片看看:
二、解决办法
# 保存图像
cv2.imwrite('extract.png', person*255)
保存输出的图片*255