""" 方法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:
验证算法灰度图和软件彩图一致性
文章探讨了三种方法来比较512*512灰度图和266*266彩图中特定像素点的匹配性。方法1直接对比像素点坐标,但由于分辨率不同导致失败。方法2尝试将灰度图上色后对比,但新图缺少彩图的其他灰度值。方法3通过生成红蓝绿图像并对比,解决了分辨率和颜色问题。最后,通过图像处理函数进行像素级对比,以确定图像是否相同。
摘要由CSDN通过智能技术生成