添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

用相同的亮度制作2张图片(第2部分)

1 人关注

几天前我开始研究这个课题,我能够通过代码的帮助将一张图片的亮度转移到另一张图片上。 https://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/ .我只用了LAB中的 "l通道",因为它代表了图像的亮度。

我这次的目的是改变两张图片的亮度,以获得相同的亮度(即黑暗的图片变得更亮,明亮的图片变得更暗)。我得到了两张图片的平均亮度,并计算了它们的比率,然后将其与每张图片相乘。我想出的代码写在下面。

import cv2
import numpy as np
i = cv2.imread('cardark.jpeg')
i2 = cv2.imread('bright3.jpeg')
img = np.array(i, dtype=np.float)
img2 = np.array(i2, dtype=np.float)
height, width = img.shape[:2]
height2, width2 = img2.shape[:2]
img = img / 255
img2 = img2 / 255
summation = 0
summation2 = 0
count = 0
count2 = 0
for i in range(height):
    for j in range(width):
        summation = summation + img[i, j]
        count += 1
for x in range(height2):
    for y in range(width2):
        summation2 = summation2 + img2[x, y]
        count2 += 1
summation = (summation[0] + summation[1] + summation[2])/3
summation2 = (summation2[0] + summation2[1] + summation2[2])/3
average = summation / count
average2 = summation2 / count2
new_avg = (average+average2)/2
r = new_avg / average
r2 = new_avg / average2
brightness = r
brightness2 = r2
image_bright = np.ones(img.shape, dtype=np.float) * brightness
image_bright2 = np.ones(img2.shape, dtype=np.float) * brightness2
image = img * image_bright
image2 = img2 * image_bright2
cv2.imshow('img', image)
cv2.imshow('img2', image2)
cv2.waitKey(0)
cv2.destroyAllWindows()

我的代码工作得很好,它给我带来了很好的结果,但只适用于很暗或很亮的图像,对于那些不那么暗或不那么亮的图像,我看不到区别(我可以在计算中看到它,但在显示它的时候却看不到亮度)。这些图像的比例非常接近,我想这就是我看不出差别的原因。然而,如果你看一下这些图像,你会发现它们的亮度足以改变,但它们在数组中的值却没有改变。

我希望有人能帮助我找到我的代码中的问题或更好的方法来达到我的目标。

示例图像是。