当我在 Python 中运行 HDR Mertens 曝光融合时,我得到了奇怪的颜色伪影,当我在 c++ 中运行完全相同的函数时,我没有得到。(我只是运行HDR 教程)
在我看来,数据类型存在一些问题,但我尝试了所有选项,但没有任何效果。难道我做错了什么?
我正在使用 OpenCV 3.0.0 运行 Python 3.5 64 位。
曝光图像取自维基百科: 1/30 秒、1/4 秒、 2.5 秒、 15 秒。
Python代码:
import cv2
import numpy as np
img_fn = ["640px-StLouisArchMultExpEV+4.09.jpg",
"640px-StLouisArchMultExpEV+1.51.jpg",
"640px-StLouisArchMultExpEV-1.82.jpg",
"640px-StLouisArchMultExpEV-4.72.jpg"]
img_list = [cv2.imread(fn) for fn in img_fn]
# Exposure fusion using Mertens
mergeMertens = cv2.createMergeMertens()
resFusion = mergeMertens.process(img_list)
# Convert datatype to 8-bit and save
resFusion_8bit = np.uint8(resFusion*255)
cv2.imwrite("fusion.png", resFusion_8bit)
我在 Python 中得到的结果:
我在 C++ 中得到的结果: