cv2.imwrite保存图片变为纯黑色

一、具体情况
使用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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值