python - 如何在 Python 和 OpenCV 中使用 "xphoto_WhiteBalancer.balanceWhite"?

标签 python python-3.x opencv image-processing opencv3.0

我正在寻找一种将自动白平衡应用于图像的简单方法。

我找到了一些关于 balanceWhite() 方法的官方文档:cv::xphoto::WhiteBalancer Class Reference

但是,当我尝试调用示例中所示的函数时,出现了一个模糊的错误。

image = cv2.xphoto_WhiteBalancer.balanceWhite(image)

加薪:

Traceback (most recent call last):
  File "C:\Users\Delgan\main.py", line 80, in load
    image = cv2.xphoto_WhiteBalancer.balanceWhite(image)
TypeError: descriptor 'balanceWhite' requires a 'cv2.xphoto_WhiteBalancer' object but received a 'numpy.ndarray'

如果我尝试根据需要使用 cv2.xphoto_WhiteBalancer 对象:

balancer = cv2.xphoto_WhiteBalancer()
cv2.xphoto_WhiteBalancer.balanceWhite(balancer, image)

它引发:

Traceback (most recent call last):
  File "C:\Users\Delgan\main.py", line 81, in load
    cv2.xphoto_WhiteBalancer.balanceWhite(balancer, image)
TypeError: Incorrect type of self (must be 'xphoto_WhiteBalancer' or its derivative)

有人成功地在 Python 3.6 和 OpenCV 3.4 中使用此功能吗?

我还尝试使用派生类 GrayworldWBLearningBasedWBSimpleWB,但错误是相同的。

最佳答案

答案可以在 xphoto documentation 中找到.

创建 WB 算法的适当方法是 createSimpleWB()createLearningBasedWB()createGrayworldWB()

示例:

wb = cv2.xphoto.createGrayworldWB()
wb.setSaturationThreshold(0.99)
image = wb.balanceWhite(image)

以下是官方 OpenCV 存储库中的示例文件:modules/xphoto/samples/color_balance_benchmark.py

关于python - 如何在 Python 和 OpenCV 中使用 "xphoto_WhiteBalancer.balanceWhite"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835662/

相关文章:

python - 构建Python : how to disable Py_LIMITED_API?

c++ - 使用 OpenCV 移动 cv::Mat 的高效 C++ 方法

c++ - 检测图像中的多个 3d 形状

python - InMemoryUploadedFile 真的是 "in memory"吗?

python - 如何通过Python帧再现音频信号?

python-3.x - keras中的增量学习

python-3.x - Azure 表存储备份

c++ - OpenCV 或 Boost 智能指针

python - 找到小于 sqrt(N) 的 N 的最大约数

python - 如何使用颜色栏中的 z 值生成线性颜色图 (cplot)