在Python中裁剪和保存TIFF文件

3

我是Python编程新手。我一直在尝试裁剪由X射线生成的一系列.tif图像。现在,它成功地进行裁剪并显示了生成的图像,但我无法保存它们。保存后的图像完全变成黑色。我正在使用的代码行如下:

    from PIL import Image
    import numpy
    startx = 421
    starty = 118
    stopx = 1182
    stopy = 336
    startfile = 1722
    stopfile = 1951
    for i in range(startfile,stopfile+1):
        image = Image.open("Filepath"+str(startfile)+".tif")
        cropped_image = image.crop((startx,starty,stopx,stopy))
        print("ipp"+str(startfile)+" cropped")
        image1 = cropped_image.rotate(180,0,1)
        image1.save("Filepath"+str(startfile),".tif")
        print("ipp"+str(startfile)+" saved")
        startfile = startfile + 1
        starty = starty + 3
        stopy = stopy + 3

需要帮助!

如果您不必坚持这个解决方案,我曾经通过在CV中创建一个文件裁剪器并使用Python调用该可执行文件来完成相同的操作。这样做更快,并且您可以轻松地进行多线程处理。 - user1767754
我尝试在Python中导入OpenCV 3.0.0。结果发现CV与Python 3.4不兼容。 - Ankit Bose
尝试使用pillow模块。它是PIL的维护分支,如果仍然无法工作,您可以提交错误报告。 - martineau
我不是指的OpenCV Python,而是OpenCV C++。 - user1767754
我使用了Pillow-2.8.1-cp34-none-win32.whl(md5)模块...是否还有其他模块我应该在Pillow中使用。我正在运行64位处理器的Win 8.1操作系统。 - Ankit Bose
我找到了解决方案。在保存之前,我将文件转换为我认为是32位的,因为图像是16位的: image1.convert('L').save("Filepath"+str(startfile)+".tif") - Ankit Bose
1个回答

2
我认为错误在这里:


image1.save("Filepath"+str(startfile),".tif")

第一个参数应该是文件名,包括扩展名。第二个参数是可选的,用于指定格式。你提供的文件名没有扩展名。这行应该是:

image1.save("Filepath"+str(startfile)+".tif")

谢谢您的回复...我已经纠正了这个问题,并在保存之前进行了convert('L')转换。但是结果被截断为8位以显示结果...否则,如果我只是保存它,代码可以正常工作,但输出文件在Windows照片查看器中不可见,但在ImageJ中可见。 - Ankit Bose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接