【问题标题】:MATLAB to Python Code Conversion - Image.open issueMATLAB 到 Python 代码转换 - Image.open 问题
【发布时间】:2016-04-07 19:55:08
【问题描述】:

好的,所以我手动将 MATLAB 转换为 Python,但我无法转换某些 sn-ps,因为我的 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 图像。我也附上了照片。有人可以帮忙吗?谢谢!

【问题讨论】:

  • 您能否包括用于保存此文件的 MATLAB 代码以及img.shape 的输出?
  • @Suever I used figure, imshow' and then saved it as a .jpg from the MATLAB window. img.shape` 给了我一个输出:(572, 813, 3) in Python
  • 您应该使用imwrite 直接将图像数据写入文件。从图中保存会在图像周围节省大量空白
  • 事实上,当您在堆栈溢出的白色背景之外查看图像时,您甚至可以看到图像周围的白色。因此,您应该期望加载的图像在第一组值中应该有很多白色。
  • 感谢@Suever 完美运行。我现在将这个问题修改为代码后面的下一个问题

标签: python matlab


【解决方案1】:

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

imwrite(img, 'filename.jpg')

不同之处在于“另存为”方法保存的图像就像您在屏幕上看到的那样,其中包括一个白色边界框。另外,在确定输出图像的尺寸时,不考虑数据的实际尺寸,只考虑图形的大小。

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

【讨论】:

  • 我会记住这一点的!不要使用 MATLAB 图形窗口来保存图像,而是使用 imwrite。知道了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-25
  • 2021-04-05
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 2023-02-12
相关资源
最近更新 更多