我可以通过OpenCV加载多帧TIFF吗?

11 投票
6 回答
17282 浏览
提问于 2025-04-17 01:41

有人知道OpenCV能否加载多帧的TIFF堆栈吗?我现在用的是OpenCV 2.2.0和Python 2.6。

6 个回答

10

虽然OpenCV不能直接打开多帧的TIFF文件,但你可以先用PIL打开这个图片,然后把数据传给OpenCV。我还没能在新的“cv2”命名空间下让它正常工作。

tiff = Image.open('sample.tif')
try:
    while 1:
        # Convert PIL image to OpenCV
        image = cv.CreateImageHeader(tiff.size, cv.IPL_DEPTH_8U, 1)
        cv.SetData(image, tiff.tostring()) # It's "tostring" and not "toString()"!
        # Do whatever you're going to do with OpenCV data
        tiff.seek(tiff.tell()+1)
except EOFError:
    pass
13

OpenCV现在可以使用imreadmulti这个函数来读取多页的TIFF文件了。你可以查看OpenCV 3.4的文档页面了解更多信息:

https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga4dd47c9ae3d55cc42286cff005825e31

7

很遗憾,OpenCV不支持TIFF格式的目录,只能从多帧的TIFF文件中读取第一帧。

撰写回答