import cv2 import numpy as np img=cv2.imread('4.jpg') def adjust_gamma(image, gamma=1.0): invGamma = 1.0/gamma table = [] for i in range(256): table.append(((i / 255.0) ** invGamma) * 255) table = np.array(table).astype("uint8") return cv2.LUT(image, table) img_gamma = adjust_gamma(img, 2) cv2.imshow("img",img) cv2.imshow("img_gamma",img_gamma) key = cv2.waitKey() if key == 27: cv2.destroyAllWindows()

提到LUT,很多人可能都會覺得這是一個很專業很高深的詞匯,LUT其實就是Look Up Table(顏色查找表)的縮寫,簡單點兒理解就是:通過LUT,我們可以將一組RGB值輸出為另一組RGB值,從而改變畫面的曝光與色彩。LUT文件就是一個包含了可以改變輸入顏色信息的矩陣數據。LUT本身並不進行運算,只需在其中列舉一系列輸入與輸出數據即可,這些數據呈一一對應的關系,系統按照此對應關系為每一個輸入值查找到與其對應的輸出值,這樣即可完成轉換,也是LUT基本不消耗CPU資源的原因。
原文鏈接:https://blog.csdn.net/weixin_42171170/article/details/94473176
提到LUT,很多人可能都會覺得這是一個很專業很高深的詞匯,LUT其實就是Lookup Table(顏色查找表)的縮寫,簡單點兒理解就是:通過LUT,你可以將一組RGB值輸出為另一組RGB值,從而改變畫面的曝光與色彩。用一個最簡單的模型幫助大家理解就是:
如果我們規定:
當原始R值為0時,輸出R值為5;
當原始R值為1時,輸出R值為6;
當原始R值為2時,輸出R值為8;
當原始R值為3時,輸出R值為10;
...
一直到R值為255
當原始G值為0時,輸出G值為10;
當原始G值為1時,輸出G值為12;
當原始G值為2時,輸出G值為13;
當原始G值為3時,輸出G值為15;
...
一直到G值為255
當原始B值為0時,輸出B值為0;
當原始B值為1時,輸出B值為0;
當原始B值為2時,輸出B值為1;
當原始B值為3時,輸出B值為1;
...
一直到B值為255
那么,如果一個像素為RGB(1,2,3),那么它應用這個LUT之后的輸出值就是RGB(6,13,1),以此類推,我們就可以把所有原始RGB值轉化為輸出RGB值。當然在實際的3D LUT轉換中,算法要比這復雜很多。
原文鏈接:http://www.sohu.com/a/230989286_252971
還有一篇參考文章:https://blog.csdn.net/Rothwale/article/details/79189032
