在python中读取图像 - 试验图像

时间:2015-05-08 15:00:56

标签: python image opencv numpy imread

我正在尝试使用Python中的图像来处理我正在进行的项目。

这是我第一次使用Python进行编程,但我还没有找到一个处理我面临的问题的教程。

我正在尝试不同的图像分解,我想将一些变量A定义为指定文件夹中的一组图像。基本上我正在寻找Python的Matlab模拟imread

经过一段时间的谷歌搜索后,我找到了许多解决方案,但由于某些原因,似乎没有一个解决方案。

例如,甚至这个简单的代码

import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)
应该工作的

(取自http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_gui/py_image_display/py_image_display.html)会产生错误“没有名为cv2的模块”。

为什么会这样?我该如何阅读图像?

我尝试的另一件事是

import numpy as np
import skimage.io as io
A=io.imread('C:\Users\Oria\Desktop\test.jpg')
io.imshow(A)

产生错误“SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置2-3中的字节:截断\ UXXXXXXXX转义”

我想要做的就是能够从指定的文件夹中读取图像,不应该很难...还应该注意我使用的数据库是ppm文件。所以我想阅读并显示ppm图像。

编辑:我的环境是Pyzo。如果它对任何事情都很重要。

Edit2:将反斜杠更改为正斜杠会将错误更改为

Traceback (most recent call last):
  File "<tmp 1>", line 3, in <module>
    A=io.imread('C:/Users/Oria/Desktop/test.jpg')
  File "F:\pyzo2015a\lib\site-packages\skimage\io\_io.py", line 97, in imread
    img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
  File "F:\pyzo2015a\lib\site-packages\skimage\io\manage_plugins.py", line 209, in call_plugin
    return func(*args, **kwargs)
  File "F:\pyzo2015a\lib\site-packages\matplotlib\pyplot.py", line 2215, in imread
    return _imread(*args, **kwargs)
  File "F:\pyzo2015a\lib\site-packages\matplotlib\image.py", line 1258, in imread
    'more images' % list(six.iterkeys(handlers.keys)))
  File "F:\pyzo2015a\lib\site-packages\six.py", line 552, in iterkeys
    return iter(d.keys(**kw))
AttributeError: 'builtin_function_or_method' object has no attribute 'keys'

1 个答案:

答案 0 :(得分:1)

与Matlab的imread最接近的类似物是scipy.misc.imread,是scipy包的一部分。我会把这段代码写成:

import scipy.misc
image_array = scipy.misc.imread('filename.jpg')

现在提出更广泛的问题。这看起来很难的原因是因为你来自Matlab,它使用了不同的哲学。 Matlab是一个单片安装,开箱即用,具有大量功能。 Python是模块化的。内置库相对较小,然后根据您要执行的操作安装软件包。例如,包scipy(科学计算),cv2(计算机视觉)和PIL(图像处理)都可以从磁盘读取简单图像,因此您可以根据它们进行选择。您可能想要使用的包装中的其他内容。

这提供了更大的灵活性,但它确实需要您舒适地安装包。遗憾的是,由于缺少一个&#34;软件包管理器&#34;,在Windows上比在类似Linux的系统上要困难得多。在Linux上我可以sudo apt-get install scipy并将所有scipy安装在一行中。在Windows中,最好安装conda之类的东西来平滑软件包安装过程。