是否可以使用OpenCV';什么是卢特?

是否可以使用OpenCV';什么是卢特?,opencv,computer-vision,Opencv,Computer Vision,根据,我们可以通过OpenCV的LUT()来调整整个图像的gamma: 我想知道是否可以进行部分伽马校正 例如,下面是一个曝光不足的玩偶: 我只想调整玩偶的伽玛值,保持其他部分不变 我已经读过了,似乎没有特定图像的局部位置的参数。您可以将图像的一个小片段传递给函数,但会在边缘处出现难看的不连续性 #!/usr/bin/env python3 import cv2 import numpy as np def adjust_gamma(image, gamma=1.0): invG

根据,我们可以通过OpenCV的
LUT()
来调整整个图像的gamma:

我想知道是否可以进行部分伽马校正

例如,下面是一个曝光不足的玩偶:

我只想调整玩偶的伽玛值,保持其他部分不变


我已经读过了,似乎没有特定图像的局部位置的参数。

您可以将图像的一个小片段传递给函数,但会在边缘处出现难看的不连续性

#!/usr/bin/env python3

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)

image = cv2.imread('doll.jpg')
image[200:1600, 800:2100] = adjust_gamma(image[200:1600, 800:2100], 3)

你可以把你的图像的一个简单切片传递给你的函数<代码>图像[顶部:底部,左边:右边] =调整γ(图像[Top:Top:Purth:Purth:Beal],Gamma)。但是你会在EdgEx周围得到一个丑陋的不连续性。在C++中,你可以使用子图像和SOM函数来允许使用掩码。不确定numpy。你们需要聊天:-)是的,它很难看而且不连续,我会想办法让它更平滑。@pvd让我知道你们是如何平滑的
#!/usr/bin/env python3

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)

image = cv2.imread('doll.jpg')
image[200:1600, 800:2100] = adjust_gamma(image[200:1600, 800:2100], 3)