gpt4 book ai didi

python - cv2.LUT在执行 Gamma 校正时引发错误-断言失败

转载 作者:行者123 更新时间:2023-12-02 16:30:59 24 4
gpt4 key购买 nike

我写了一些代码来对图像进行 Gamma 调整。为此,我正在创建一个LUT以在图像中执行 Gamma 校正。调用cv2.LUT时收到以下错误:

error: OpenCV(4.4.0)C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-52oirelq\opencv\modules\core\src\lut.cpp:368:error: (-215:Assertion failed) (lutcn == cn || lutcn == 1) &&_lut.total() == 256 && _lut.isContinuous() && (depth == CV_8U || depth == CV_8S) in function 'cv::LUT'


我编写的代码如下所示,它是执行 Gamma 校正的功能:
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

关于python - cv2.LUT在执行 Gamma 校正时引发错误-断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64484423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com