module ‘cv2‘ has no attribute ‘createTonemapDurand‘

1. 问题:

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

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函数

Durand Tonemap的参数如下所示:

createTonemapDurand
(
  float     gamma = 1.0f,
  float     contrast = 4.0f,
  float     saturation = 1.0f,
  float     sigma_space = 2.0f,
  float     sigma_color = 2.0f
);

该算法基于将图像分解为基础层和细节层。使用称为双边滤波器的边缘保留滤波器获得基础层。sigma_space和sigma_color是双边滤波器的参数,分别控制空间域和颜色域中的平滑量。更多的技术细节见:

3. 分析

opencv3.4.2以上的opencv设计专利问题,有一些函数无法使用

4. 解决

安装opencv3.4.2与对应的opencv-contrib库。具体安装如下:
windows系统打开cmd,如果是conda需要进入自己的安装环境,分别按照以下步骤安装即可:

 - pip install opencv-python==3.4.2.16 
 - pip install opencv-contrib-python==3.4.2.16

5. 参考


https://blog.csdn.net/guzhao9901/article/details/113776312
https://www.cnpython.com/qa/1337247

猜你喜欢

转载自blog.csdn.net/LemonShy2019/article/details/125987255