Python 使用cv2访问图像的像素
我想访问Python中的图像,然后对其像素进行重新排序。几个不同的教程,包括使用此方法访问像素:Python 使用cv2访问图像的像素,python,opencv,Python,Opencv,我想访问Python中的图像,然后对其像素进行重新排序。几个不同的教程,包括使用此方法访问像素: import cv2 import numpy as np image = cv2.imread('ironman.bmp') pixel = image[200, 500] print pixel 我试过了,但是在执行了pixel=image[200500]命令之后,我收到了以下错误消息: Traceback (most recent call last): File "<pyshel
import cv2
import numpy as np
image = cv2.imread('ironman.bmp')
pixel = image[200, 500]
print pixel
我试过了,但是在执行了pixel=image[200500]
命令之后,我收到了以下错误消息:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
pixel = image[200, 500]
TypeError: 'NoneType' object is not subscriptable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
像素=图像[200500]
TypeError:“非类型”对象不可下标
经过一些研究,我发现错误消息意味着
image[200500]
的值是None
。但是本教程使用的代码没有这个问题。有人能告诉我我可能做错了什么吗?我正在使用Python 3.6.0。image
是None
<当找不到文件时,code>cv2.imread返回None
。(在我看来,这是一个值得怀疑的设计决策。)
您几乎肯定提供了错误的文件名或错误的文件相对路径。(当前调用
imread
的方式是,该文件必须与Python脚本位于同一目录中。)现有代码本身没有错误。您可能存在以下问题之一:
import cv2
#---I have passed the image path in a variable called filename which is accessed by cv2.imread() function---
filename = 'C:\\Users\\Mark\\Desktop\\stack\\Original.jpg'
image = cv2.imread(filename)
pixel = image[200, 500]
print pixel
结果是:
[179 147 82]
[131]
如果您读取灰度图像,结果将完全不同:
filename = 'C:\\Users\\Mark\\Desktop\\stack\\Original.jpg'
image = cv2.imread(filename, 0)
pixel = image[200, 500]
print pixel
结果是:
[179 147 82]
[131]
请检查
图像
中的值,我认为它是无
。图像层是什么?怎么样pixel=image[200500,0]
?问题似乎出在我给文件的路径上。虽然路径是正确的,但其中一个文件夹中有美国字母表以外的字母(é)。我重新命名后,脚本运行没有问题。谢谢你的帮助!