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++で得た結果: