python将两个图片倍数关系求出来

 A图比较暗,B图比较亮,现在将A图增亮到和B图一样

需要求出A和B两张图亮度倍数关系,一种方法是遍历所有像素点相加再求倍数,另一种是直接使用数组求平均的方法,方法1适合C++等场合思想,在python中一切皆对象,操作更快,速度比遍历像素点快了好多倍

import cv2
import numpy as np

def enhance_img(input,label):
    #input:需要进行强度匹配的图像
    #label:用于图像校准的图像
    input_sum= 0
    label_sum= 0
    input_h,input_w = input.shape
    img_out = np.zeros((input_h,input_w),dtype=input.dtype)
    for h in range(input_h):
        for w in range(input_w):
            input_sum += input[h,w]
            label_sum += label[h,w]
    factor = label_sum/input_sum
    for h in range(input_h):
        for w in range(input_w):
            img_out[h,w] = np.clip(input[h,w]*factor,0,255)
    return img_out

def enhance_img1(input,label):
    return np.clip(input*(label[:,:].mean()/input[:,:].mean()),0,255)

img = cv2.imread("./input/1.1/2x2Deg/0.png",-1)
label = cv2.imread("./label/1.0/2x2Deg/0.png",-1)

img_1 = enhance_img(img,label)
img_2 = enhance_img1(img,label)

print(img_1.all()==img_2.all())# True

cv2.waitKey(0)

猜你喜欢

转载自blog.csdn.net/Li_haiyu/article/details/89003366