[英]Accessing a pixel of an image with cv2
我想訪問然后在Python中重新着色圖像的像素。 包括本教程在內的幾種不同的教程都使用此方法訪問像素:
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腳本。)
您所擁有的代碼本身沒有錯誤。 您可能遇到以下問題之一:
我為您選擇的圖像制定了代碼:
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]
如果您閱讀灰度圖像,結果將大不相同:
filename = 'C:\\Users\\Mark\\Desktop\\stack\\Original.jpg'
image = cv2.imread(filename, 0)
pixel = image[200, 500]
print pixel
結果:
[131]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.