我在python opencv中读取图像,现在我需要将此图像上的照明更改为更暗或更亮,我应该使用哪种方法来启用此功能?
Jer*_*uke 15
我知道我迟到了,但我建议使用伽玛校正.
现在什么是伽马校正?
我将以外行的方式说清楚:
由于计算机屏幕将伽玛值应用于屏幕上的图像,因此应用反伽马来对抗该效果的过程称为伽马校正.
以下是使用OpenCV 3.0.0和python的相同代码:
import cv2
import numpy as np
def adjust_gamma(image, gamma=1.0):
invGamma = 1.0 / gamma
table = np.array([((i / 255.0) ** invGamma) * 255
for i in np.arange(0, 256)]).astype("uint8")
return cv2.LUT(image, table)
x = 'C:/Users/524316/Desktop/stack/test.jpg' #location of the image
original = cv2.imread(x, 1)
cv2.imshow('original',original)
gamma = 0.5 # change the value here to get different result
adjusted = adjust_gamma(original, gamma=gamma)
cv2.putText(adjusted, "g={}".format(gamma), (10, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3)
cv2.imshow("gammam image 1", adjusted)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
这是原始图像:
应用值为0.5的gamma将产生:
应用值为1.5的gamma将产生:
应用值为2.5的gamma将产生:
应用值为1.0的伽玛将产生相同的图像.
我认为你可以用 opencv 来做到这一点。这是我的建议
import cv2
import numpy as np
img1 = cv2.imread('abc.jpg')
a = np.double(img1)
b = a + 15
img2 = np.uint8(b)
cv2.imshow("frame",img1)
cv2.imshow("frame2",img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
这里我增加了图像的亮度。如果你使用减法,就会变得更暗。
| 归档时间: |
|
| 查看次数: |
17437 次 |
| 最近记录: |