【问题标题】:How to call up Open CV Durand Tonemap function?如何调用 Open CV Durand Tonemap 功能?
【发布时间】:2020-11-24 12:07:31
【问题描述】:

我正在尝试使用 Python 检查 Open CV 中的多个色调映射运算符。

各种来源使用四个运算符(Drago、Durand、Reinhard、Mantiuk)。其中三个工作。但是,当我打电话给cv2.createTonemapDurand() 时,我收到了这个错误:

AttributeError: module 'cv2.cv2' has no attribute 'createTonemapDurand'

是否有可能以某种方式调用 Durand 运算符,或者 Open CV 是否最近删除了该运算符?

谢谢!

【问题讨论】:

    标签: python opencv image-processing hdr


    【解决方案1】:

    我将从评论切换到答案以更好地表示。

    你只需要:

    import cv2
    
    cv2.xphoto.createTonemapDurand()
    

    请注意,如果您自己编译 opencv,则必须检查 OPENCV_ENABLE_NONFREE。

    【讨论】:

    • 谢谢,看来你是对的 - 我必须启用 NONFREE。我试图找到一个合适的教程,但它很混乱。关于如何访问 cmake 和检查 OPENCV_ENABLE_NONFREE 的任何想法?
    • 如果你不需要额外的模块作为opencv的CUDA你不必自己编译它。只需使用 pip install opencv-contrib-python ,它会更快。
    • 不幸的是,即使在使用 pip3 安装 opencv-contrib-python 之后(使用 pip 表示“要求已经满足”),它仍然会引发同样的错误...@panda50 你认为这是否明智卸载opencv并从头开始?
    • 看起来从 opencv-contrib > 4.0.1 开始,xphoto 不再是“免费的”。例如,它也发生在 Orb 函数中。例如,即使将 opencv-contrib 降级到 3.4.11,它也会要求我自己构建 opencv 并启用 NONFREE 选项。如果你真的想使用 xphoto,你必须自己使用 Cmake (for windows) 构建 opencv,设置 OPENCV_ENABLE_NONFREE 并下载最新版本的 opencv-contrib。别担心,它适用于 opencv 4.4.0(这是我构建的,它适用于我)。或者......你可以改变你的方法,避免使用 xphoto。 ;)
    【解决方案2】:

    请将您的代码发布到您导入 cv2 并调用该函数的位置。如果您想查找某些函数、属性或其他任何内容,请查看包的文档或使用 dir() 和 type()。对于您的示例,您可以使用:

    import cv2
    from re import match
    
    cv2_filtered = filter(lambda v: match('.*Tonemap', v), dir(cv2))
    [print(val) for val in cv2_filtered]
    

    返回:

    Tonemap
    TonemapDrago
    TonemapMantiuk
    TonemapReinhard
    createTonemap
    createTonemapDrago
    createTonemapMantiuk
    createTonemapReinhard
    

    好像cv2中没有createTonemapDurand函数。

    【讨论】:

    • 谢谢,但@panda50 似乎找到了解决方案。好吧,至少有一个方向:)
    猜你喜欢
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2021-06-30
    • 1970-01-01
    • 2022-07-19
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多