Можно ли сделать частичную настройку гаммы, используя LUT OpenCV? - PullRequest
1 голос
/ 05 марта 2020

Согласно Гамма-коррекция OpenCV , мы можем отрегулировать гамму всего изображения с помощью LUT():

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)

. Мне было интересно, возможно ли сделать частичную гамма-коррекцию?

Например, вот кукла с недодержкой:

Underexposure doll

Я просто хочу настроить гамму куклы и сохранить другую часть все то же самое.

Ad hoc demo

Я прочитал официальный do c OpenCV , кажется, что нет никакого параметра чтобы указать c частичное положение изображения.

1 Ответ

2 голосов
/ 05 марта 2020

Вы можете передать фрагмент изображения Numpy в вашу функцию, но вы получите уродливый разрыв по краям.

#!/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)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...