验证算法灰度图和软件彩图一致性

文章探讨了三种方法来比较512*512灰度图和266*266彩图中特定像素点的匹配性。方法1直接对比像素点坐标,但由于分辨率不同导致失败。方法2尝试将灰度图上色后对比,但新图缺少彩图的其他灰度值。方法3通过生成红蓝绿图像并对比,解决了分辨率和颜色问题。最后,通过图像处理函数进行像素级对比,以确定图像是否相同。
摘要由CSDN通过智能技术生成
"""
方法1:compare_func1
    1.先拿到算法返回的512*512的png灰度图,把所有灰度为255的像素点坐标提取后输出一个list
    2. 在软件系统,将对应切片的彩图保存下来(这个彩图的保存下来是266*266,跟png分辨率不同),把所有彩色像素点(红 219,7,0蓝 41,23,227绿 83,236,15)坐标输出一个list
    3. 两个list进行对比,完全相同证明结果OK
    问题: 因为彩图跟灰度图分辨率不同,导致像素点坐标集合不同,未找到办法?
方法2: compare_func2
    1. 先拿到算法返回的512*512的png灰度图,把所有灰度为255的像素点坐标提取后输出一个list
    2.再基于灰度图,根据(红 219,7,0蓝 41,23,227绿 83,236,15)进行上色,然后保存为266*266的彩图
    3. 拿到步骤二的彩图跟软件系统下载下来的彩图进行对比
    问题: 软件系统下载的彩图不仅有红蓝绿,还有其他灰度值,而步骤2基于算法灰度图生成的新png彩图只有红蓝绿的一种,无法比对
方法3: 解决方法2存在的问题:分别基于算法png的白色像素点坐标生成红蓝绿图像,基于彩图里面的红蓝绿一种颜色的像素点生成新的红蓝绿图像(原彩图没有彩色的像素点坐标跟算法生成的png一样处理成黑色,然后对比
"""
import cv2
import numpy as np
import png
from PIL import Image


def compare_func1():
    gray_img = cv2.imread('/pic/gray.png', 0)
    color_img = cv2.imread('/pic/color3.png')

    gray_height, gray_width = gray_img.shape[:2]
    color_height, color_width = color_img.shape[:2]

    white_pixels = []
    for y in range(gray_height):
        for x in range(gray_width):
            if gray_img[y, x] == 255:
                white_pixels.append((x, y))
    color_pixels = []
    for y in range(color_height):
        for x in range(color_width):
            if color_img[y, x, 0] == 227 and color_img[y, x, 1] == 23 and color_img[y, x, 2] == 41:
                color_pixels.append((x, y))
    white_pixels_new = sorted(white_pixels, key=lambda x: x[1])
    color_pixels_new = sorted(color_pixels, key=lambda x: x[1])

    match = white_pixels_new == color_pixels_new
    if match:
        print('两个像素点列表完全相同!')
    else:
        print('两个像素点列表不同!')


def compare_func2():
    gray_img = cv2.imread('gray.png', 0)
    color_img = cv2.imread('color.png')

    gray_height, gray_width = gray_img.shape[:2]
    color_height, color_width = color_img.shape[:2]

    white_pixels = []
    for y in range(gray_height):
        for x in range(gray_width):
            if gray_img[y, x] == 255:
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值