变化检测结果可视化

将变化检测中预测错误的假阴性和假阳性用不同的颜色在图上显示出来。假阳性,标记为绿色;假阴性,标记为红色。

from PIL import Image, ImageOps
import os
import cv2

"""
    将变化检测中预测错误的假阴性和假阳性用不同的颜色在图上显示出来。
"""

def compare_images(image_label_folder, image_predict_folder, output_vis_result_folder):
    img_list = os.listdir(image_label_folder)
    for img_name in img_list:
        img_label_path = os.path.join(image_label_folder, img_name)
        image_predict_path = os.path.join(image_predict_folder, img_name)
        output_vis_result_path = os.path.join(output_vis_result_folder, img_name)

        # 打开图片A和B
        image_label = Image.open(img_label_path).convert('RGB')
        image_predict = Image.open(image_predict_path).convert('RGB')

        # 确保两张图片的分辨率相同
        if image_label.size != image_predict.size:
            raise ValueError("The two images do not have the same resolution.")

        # 创建一个新的与A和B相同分辨率的图片C
        width, height = image_label.size
        image_vis_result = Image.new('RGB', (width, height))
        pixels_vis_result = image_vis_result.load()

        # 遍历每个像素进行比较
        for x in range(width):
            for y in range(height):
                pixel_label = image_label.getpixel((x, y))
                pixel_predict = image_predict.getpixel((x, y))

                if pixel_label == pixel_predict:
                    pixels_vis_result[x, y] = pixel_label
                elif pixel_label == (255, 255, 255) and pixel_predict == (0, 0, 0):  # false negative
                    pixels_vis_result[x, y] = (0, 255, 0)  # 假阳性,标记为绿色
                elif pixel_label == (0, 0, 0) and pixel_predict == (255, 255, 255):  # false positive
                    pixels_vis_result[x, y] = (255, 0, 0)  # 假阴性,标记为红色
                else:
                    # 如果不满足以上条件,可以设置为任意颜色,这里设置为灰色作为示例
                    # 你也可以根据需要设置为其他颜色或保留其中一个图片的像素值
                    pixels_vis_result[x, y] = (0, 0, 255)  # 蓝色

        # 保存新的图片C
        image_vis_result.save(output_vis_result_path)
    print(f"The output image has been saved to {output_vis_result_folder}")

if __name__ == "__main__":
    # 使用示例
    image_label_folder = '/home/rtx3080ti/ChangeDetection/Tools/label'
    image_predict_folder = '/home/rtx3080ti/ChangeDetection/Tools/predict'
    output_vis_result_folder = '/home/rtx3080ti/ChangeDetection/Tools/vis_result'
    compare_images(image_label_folder, image_predict_folder, output_vis_result_folder)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值