我试着像这样读取.hdr文件:

img = cv2.imread(sys.argv[1])
cv2.imshow('Image', img)

这给了我一个3通道8位Mat,它(几乎)是全白或非常暗的图片。所以我想它只能给我一张曝光顺序的图像?如何获得所有信息的正确Mat
  • OpenCV版本是3.1.0。
  • 使用的HDR文件:http://people.csail.mit.edu/sparis/publi/2011/siggraph/(“输入图像”)
  • 最佳答案

    您拥有的数据是合并的堆栈,而不是单独的曝光。为了正确显示它,您需要对数据进行色调映射。这是正确的过程,例如:

    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/

    10-12 21:20