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