簡體   English   中英

使用CV2訪問圖像的像素

[英]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。

imageNone cv2.imread找不到文件時,它返回None (我認為這是一個有問題的設計決定。)

>>> import cv2
>>> image = cv2.imread('does not exist')
>>> image is None
True

您幾乎可以肯定提供了錯誤的文件名或錯誤的相對路徑。 (這就是你撥打imread當前文件必須在同一目錄作為您的Python腳本。)

您所擁有的代碼本身沒有錯誤。 您可能遇到以下問題之一:

  1. 您提到的圖像文件不存在(或)
  2. 圖像路徑未正確提及
  3. 還要確保圖像格式是否正確提及

我為您選擇的圖像制定了代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM