Python 如何使用opencv从tif文件导入多个图层

Python 如何使用opencv从tif文件导入多个图层,python,image,opencv,computer-vision,tiff,Python,Image,Opencv,Computer Vision,Tiff,我正在使用python(cv2)导入一个包含三层的.tif文件,但似乎只能导入一层。如何分别导入所有三个图层 import cv2 img = cv2.imread('LanB2_KD1P2_31603_gut_2.tif', cv2.IMREAD_COLOR) #extract blue channel blue_channel = img[:,:,0] #write blue channel to greyscale image cv2.imwrite('blue_channel.jp

我正在使用python(cv2)导入一个包含三层的.tif文件,但似乎只能导入一层。如何分别导入所有三个图层

import cv2

img = cv2.imread('LanB2_KD1P2_31603_gut_2.tif', cv2.IMREAD_COLOR)

#extract blue channel
blue_channel = img[:,:,0]

#write blue channel to greyscale image
cv2.imwrite('blue_channel.jpg',blue_channel)

这将从第一层提取蓝色通道,但idk如何获取其他层

您可以简单地使用
cv2.split
来分割图像通道

导入cv2
img=cv2.imread('LanB2_KD1P2_31603_gut_2.tif',cv2.imread_COLOR)
b、 g,r=cv2.分割(img)
###保存文件
cv2.imwrite('blue_channel.jpg',b)
cv2.imwrite('green_channel.jpg',g)
cv2.imwrite('red_channel.jpg',r)
编辑1: 如果您想在一个TIF文件中分割多个图像,并按照@fmw42的建议将其另存为单独的文件,下面是相关代码

导入操作系统
从PIL导入图像
def tifToImage(tifPath、imageFormat、folderPath):
“”“将tif转换为图像的函数
Args:
tifPath(str):输入tif的路径
imageFormat(str):保存图像的格式
folderPath(str):用于保存图像的文件夹
返回:
int:如果成功,则为0
"""
打印('tiftoimage:{}'。格式(tifPath))
sep='/'如果'/'在tifPath else'\'中
fileName=tifPath.split(sep)[-1][:-4]
###加载tiff图像
tiffstack=Image.open(tifPath)
tiffstack.load()
###将每个图像保存到输出文件夹
对于范围内的i(tiffstack.n_帧):
tiffstack.seek(i)
pageName=fileName+'{:05d}.{}.格式(i+1,imageFormat)
imagePath=os.path.join(folderPath,pageName)
tiffstack.save(图像路径)
返回0
函数调用类似于

tifToImage('LanB2_KD1P2_31603_gut_2.tif'、'jpg'、'out_folder')

更简单,您可以使用cv2.imreadmulti:

ret, image = cv2.imreadmulti('LanB2_KD1P2_31603_gut_2.tif', [], cv2.IMREAD_ANYCOLOR)

然后,您可以通过索引(例如图像[0])访问每个层。

尝试
绿色通道=img[:,:,1]
,红色是2。您想要层/页还是彩色通道?您的问题是关于图层的,但您正在尝试访问颜色通道。如果您想要多页,请参见他想要的是层/页,而不是通道。@fmw42,我已经添加了代码以TIF格式将不同的页保存到jpg中。@plotka很乐意提供帮助。如果你觉得这有帮助,请把答案也投上去:D