我写了一些代码来对图像进行伽玛调整。为此,我正在创建一个LUT以在图像中执行伽玛校正。我在致电时收到以下错误cv2.LUT
:
错误:OpenCV(4.4.0)C:\ Users \ appveyor \ AppData \ Local \ Temp \ 1 \ pip-req-build-52oirelq \ opencv \ modules \ core \ src \ lut.cpp:368:错误:(-215 :声明失败)(lutcn == cn || lutcn == 1)&& _lut.total()== 256 && _lut.isContinuous()&&(深度== CV_8U ||深度== CV_8S): LUT'
我编写的代码如下所示,它是执行伽玛校正的功能:
import cv2
import numpy as np
def adjust_gamma(image, gamma=1.0):
# build a lookup table mapping the pixel values [0, 255] to
# their adjusted gamma values
invGamma = 1.0 / gamma
table = np.array([((i / 255.0) ** invGamma) * 255
for i in np.arange(0, 256)]).astype("uint8")
# apply gamma correction using the lookup table
return cv2.LUT(image, table)
我究竟做错了什么?
您的输入图像很可能不是无符号的8位整数。该错误消息非常能说明问题,因为它希望输入图像成为cv2.LUT
这种类型。我怀疑您的图片是浮点精度。在这种情况下,最简单的解决方案是将值缩放255并uint8
转换为,然后运行该方法,然后在以下情况下转换为浮点:
output = adjust_gamma((255 * image).astype(np.uint8), table)
output = (output.astype(np.float)) / 255
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句