MATLAB到Python代码转换 - Image.open问题

时间:2016-04-07 19:55:08

标签: python matlab

enter image description here好的,所以我手动将MATLAB转换为Python,而且我无法转换某些片段,因为我在Python上并不是那么棒

我从一段MATLAB代码中获取了这张黑白图像。在MATLAB中,它的维度是(根据size函数):1944 2592

我将此图像保存为.jpg,并使用以下代码在Python中打开:

img = Image.open("csm1.jpg")
img = np.array(img)
print img

我得到的输出为:

[[[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 ..., 
 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]]
[[  0   0   0]
 [  0   0   1]
 [  0   0   2]
 ..., 
 [571 812   0]
 [571 812   1]
 [571 812   2]]

我不明白在MATLAB中2D的黑白照片如何在Python中成为完全白色的3D图像。我也附上了这张照片。任何人都可以帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果要在MATLAB看到的情况下保存图像数据,您需要使用imwrite保存它,而不是先使用imshow显示它并保存图形。

imwrite(img, 'filename.jpg')

区别在于"另存为"当您在屏幕上看到时,方法会保存图像,其中包含一个白色边框。此外,在确定输出图像的尺寸时,不考虑数据的实际尺寸,而只考虑图的尺寸。

此外,即使您的图像在MATLAB(2D)中是灰度图像,当您使用imwrite将其保存为JPEG时,它将在保存时转换为RGB图像(3D)。