我想在 Python 中访问图像的像素,然后对其重新着色。几个不同的教程,包括 this one使用此方法访问像素:
import cv2
import numpy as np
image = cv2.imread('ironman.bmp')
pixel = image[200, 500]
print pixel
我试过了,但是在执行 pixel = image[200, 500]
命令后,我收到以下错误消息:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
pixel = image[200, 500]
TypeError: 'NoneType' object is not subscriptable
经过一些研究,我发现错误消息意味着 image[200, 500]
的值是 None
。但是教程使用这段代码没有这个问题。有人可以告诉我我可能做错了什么吗?我正在使用 Python 3.6.0。
最佳答案
image
是 None
。 cv2.imread
在找不到文件时返回 None
。 (在我看来,这是一个有问题的设计决定。)
>>> import cv2
>>> image = cv2.imread('does not exist')
>>> image is None
True
您几乎可以肯定提供了错误的文件名或错误的文件相对路径。 (您调用 imread
的方式当前文件必须与您的 Python 脚本位于同一目录中。)
关于python - 使用 cv2 访问图像的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43519015/