Python imread bug:“;不支持的BMP位字段布局“;

Python imread bug:“;不支持的BMP位字段布局“;,python,image,imread,Python,Image,Imread,我似乎在scipy.misc.imread中遇到了一个bug,我正在寻找解决方法。以下是错误报告的剪辑: from scipy.misc import imread im = imread('380.bmp') ... C:\Anaconda3\lib\site-packages\PIL\BmpImagePlugin.py in _bitmap(self, header, offset) 145 raw_mode = MASK_MODES[(file_i

我似乎在scipy.misc.imread中遇到了一个bug,我正在寻找解决方法。以下是错误报告的剪辑:

from scipy.misc import imread
im = imread('380.bmp')
...

C:\Anaconda3\lib\site-packages\PIL\BmpImagePlugin.py in _bitmap(self, header, offset)
145                     raw_mode = MASK_MODES[(file_info['bits'], file_info['rgb_mask'])]
146                 else:
--> 147                     raise IOError("Unsupported BMP bitfields layout")
148             else:
149                 raise IOError("Unsupported BMP bitfields layout")

OSError: Unsupported BMP bitfields layout
我可以在图像查看器中毫无问题地打开图像,因此我确信它没有损坏

主要问题是:什么是imread的最佳替代方案,这样我就可以绕过这个问题了?或者,如果你知道一种修复imread的方法,那也不错


顺便说一句,我在Anaconda2.4.1(64位)中使用Python 3.5.1。

我在使用PIL.Image时遇到了相同的错误。我使用cv2绕过了这个问题。 我的代码是这样的:

import cv2 #pip install opencv-python
from PIL import Image #pip install pillow
temp_img = cv2.imread(filename.bmp)
color_corrected = cv2.cvtColor(temp_img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(color_corrected)

祝您好运。

您可以在命令行运行ImageMagick,使用此命令将损坏的BMP文件转换为更快乐的PNG
convert StupidBrokenPieceOfMicrosoftJunk.BMP sensible.PNG
只是为了确认ImageMagick为您转换该文件没有问题-我测试了它。如果你有很多不满意的BMP文件,你可以运行
mogrify-format png*.BMP
,这将生成当前目录中所有BMP文件的png格式副本-我想你可以在Python启动脚本中执行此操作。@MarkSetchell谢谢你的提示。mogrification实际上就是我最终所做的(我有几百个BMP要处理)。这是一个很好的解决办法,但我希望这个问题能传到派拉布人的耳朵里……我很高兴——很高兴它为你解决了。祝你的项目好运!