我可以通过OpenCV加载多帧TIFF吗?
有人知道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文件中读取第一帧。