我试着像这样读取.hdr
文件:
img = cv2.imread(sys.argv[1])
cv2.imshow('Image', img)
这给了我一个3通道8位
Mat
,它(几乎)是全白或非常暗的图片。所以我想它只能给我一张曝光顺序的图像?如何获得所有信息的正确Mat
?最佳答案
您拥有的数据是合并的堆栈,而不是单独的曝光。为了正确显示它,您需要对数据进行色调映射。这是正确的过程,例如:
Mat hdr = imread("xxx.hdr",-1); // correct element size should be CV_32FC3
Mat ldr;
Ptr<TonemapReinhard> tonemap = createTonemapReinhard(2.2f);
tonemap->process(hdr, ldr);
ldr.convertTo(ldr, CV_8UC3, 255);
然后用highgui显示您的ldr。
关于python - 使用OpenCV打开.hdr文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38926689/