Python imread bug:“;不支持的BMP位字段布局“;
我似乎在scipy.misc.imread中遇到了一个bug,我正在寻找解决方法。以下是错误报告的剪辑: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
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要处理)。这是一个很好的解决办法,但我希望这个问题能传到派拉布人的耳朵里……我很高兴——很高兴它为你解决了。祝你的项目好运!