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

我找到了有关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

10-06 11:44