imshow不显示从ndarray提取的图像。没有错误

时间:2018-11-12 08:22:19

标签: python image numpy matplotlib imshow

我需要实现一个生活游戏。 我与Pyzo和

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) on Windows (64 bits).
This is the Pyzo interpreter with integrated event loop for PYQT5.

为此,我希望该地图成为世界地图,而不是正方形。 所以我得到了单色图像。我打开它,将其转换为数组。但我无法显示它。没有错误,我在代码中设置的日志消息似乎显示一切正常,但是未显示带有图像的窗口。我还尝试了RGBA图像,但没有成功 重新启动PC后,我也尝试过。

图像是一个bmp,用位图单色的油漆保存。我加入了 感谢您提出解决此问题的任何想法。

这是我的代码中的消息

format: BMP   mode: 1   palette: None
The image is 993 x 579
ok
[[1 1 1 ... 1 1 1]
 [1 0 0 ... 0 0 1]
 [1 0 0 ... 0 0 1]
 ...
 [1 0 0 ... 0 0 1]
 [1 0 0 ... 0 0 1]
[1 1 1 ... 1 1 1]]
0
(579, 993)
<class 'numpy.ndarray'>
<class 'numpy.uint8'>
should be displayed 

这是代码

def Load_image(filename):
#    try:
    img = Image.open(filename) 
    print ('format: %s   mode: %s   palette: %s' % (img.format,img.mode,img.palette))
    print ('The image is %d x %d' % img.size)
    return img
 #    except:
    print ("Unable to open %s" % filename)
    return -1

def Img2Array(img):
    # BytePerPixel = {'1': 1, 'RGB': 2, 'RGBA' : 4 }# 1: B&W, 3: RGB, 4: RGBA (A=Alpha : transparency)
    # result = numpy.array(img.getdata(), numpy.uint8).reshape(img.size[1], img.size[0], BytePerPixel.get(img.mode))
    result = numpy.array(img,dtype='int8')
    print (result)
    print(result[200,200])
    print(result.shape)
    print (type(result))
    print (type(result[200,200]))

    test = plt.imshow(result)
    print ("should be displayed")
    return result

fichiercarte = "C:\\Users\\mld\\Desktop\\python\\world-map1.bmp"
carte = Load_image(fichiercarte)
if (carte != None): 
   print ("ok")
ndArrayCarteDuMonde = Img2Array (carte)

Monochrome world map

0 个答案:

没有答案