首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cv2.LUT在执行伽马校正时抛出一个错误-断言失败

cv2.LUT在执行伽马校正时抛出一个错误-断言失败
EN

Stack Overflow用户
提问于 2020-10-22 14:27:33
回答 1查看 1.5K关注 0票数 1

我写了一些代码对图像进行伽马校正。为了做到这一点,我正在创建一个LUT来执行图像中的伽马校正。调用cv2.LUT时,收到以下错误

C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-52oirelq\opencv\modules\core\src\lut.cpp:368:错误:(-215:断言失败)函数'cv::LUT‘中的

错误(lutcn == cn区cn\x lutcn == 1) & _lut.total() == 256 & _lut.isContinuous()和(深度== CV_8U _lut.isContinuous_lut.isContinuous == CV_8S)

我编写的代码如下所示,它是执行伽马校正的函数:

代码语言:javascript
运行
复制
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)

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-22 18:37:04

您的输入图像很可能不是无符号8位整数。错误消息非常有说服力,因为它希望cv2.LUT中的输入映像是这种类型。我怀疑你的图像是浮点精度。在这种情况下,最简单的解决方案是将值缩放为255,然后强制转换为uint8,然后运行该方法,然后将其转换为浮点:

代码语言:javascript
运行
复制
output = adjust_gamma((255 * image).astype(np.uint8), table)
output = (output.astype(np.float)) / 255
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64484423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档