比较两个图像,以查看前一个图像的像素是否为白色,而后一个图像的像素为白色。如果正在创建的新图像的像素是白色,则前一个图像的像素是白色,而后一个图像的像素是黑色,如果黑色图像中的像素是黑色,而后一个图像中的像素是白色,如果上一个图像中的像素为黑色,而后一个图像中的像素为黑色,则程序将创建黑色。
我认为问题在于原始图像只有两个值(黑色,白色),因此如果我尝试将其颜色更改为红色或蓝色或其他颜色,则会出现问题...
import os
import glob
import cv2
import numpy as np
from PIL import Image
def comparing(bmp_before_img,bmp_after_img,path_after):
save_file_name = path_after
annot = np.zeros((bmp_before_img.shape[0], bmp_after_img.shape[1]), dtype=np.uint8)
for j in range(256):
for k in range(256):
if bmp_after_img[j,k,1] != 0 and bmp_before_img[j,k,1] != 0:
annot[j,k] = bmp_after_img[j,k,1]
elif bmp_after_img[j,k,1] != 0 and bmp_before_img[j,k,1] == 0:
annot[j,k] = (255,0,0)
elif bmp_after_img[j,k,1] == 0 and bmp_before_img[j,k,1] != 0:
annot[j,k] = (0,0,255)
else:
annot[j,k] = bmp_after_img[j,k,1]
cv2.imwrite(save_file_name, annot)
path_before =''
path_after =''
bmp_before_list = glob.glob(os.path.join(path_before,'*.bmp'))
bmp_after_list = glob.glob(os.path.join(path_after,'*.bmp'))
img = cv2.imread(bmp_before_list[3])
cv2.imshow('',img)
if len(bmp_before_list) >= len(bmp_after_list):
for i in range(0,len(bmp_after_list)):
bmp_before_list = str(bmp_before_list[i])
bmp_after_list = str(bmp_after_list[i])
bmp_before_img = cv2.imread(bmp_before_list)
bmp_after_img = cv2.imread(bmp_after_list)
comparing(bmp_before_img,bmp_after_img,path_after)
else:
for j in range(0,len(bmp_before_list)):
bmp_before_list = str(bmp_before_list[j])
bmp_after_list = str(bmp_after_list[j])
bmp_before_img = cv2.imread(bmp_before_list)
bmp_after_img = cv2.imread(bmp_after_list)
comparing(bmp_before_img,bmp_after_img,path_after)