2017-06-23 15 views
-1

我是新手opencv,我試圖打印像素。如何解決'NoneType'對象不可下標是opencv

import numpy as np 
import cv2 
img = cv2.imread('freelancer.jpg',cv2.IMREAD_COLOR) 
px = img[55,55] 
print(px) 

我越來越

Traceback (most recent call last): 
    File "C:/Users/Jeet Chatterjee/image processing/basic_image_op.py", line 6, in <module> 
px = img[55,55] 
TypeError: 'NoneType' object is not subscriptable 
+0

所以'cv2.imread()''返回None'。你可以測試一下,或者試圖找出你的圖片無法加載的原因。 –

回答

1

cv2.imread() documentation

功能imread加載從指定的文件的圖像並將其返回。如果圖像不能被讀取(因爲丟失的文件,不適當的權限,不支持的或無效的格式的),則該函數將返回一個空矩陣(Mat::data==NULL

文檔趨於朝向C++ API被減速,但用於Python ,對於後一種情況,閱讀返回None

所以發生了什麼是你的圖像文件無法讀取;它要麼丟失,要麼是不正確的權限,要麼是不受支持或無效的格式。

鑑於您正在使用相對路徑來加載文件,我會說它已丟失。 目前的工作目錄缺失,與您放入腳本的目錄不同。

如果可能,請使用絕對路徑加載文件。如果您需要從同一目錄腳本加載它,使用腳本文件名作爲起點:

import os.path 
# construct an absolute path to the directory this file is located in 
HERE = os.path.dirname(os.path.abspath(__file__)) 

然後使用爲出發點,以加載文件:

image_path = os.path.join(HERE, 'freelancer.jpg') 
img = cv2.imread(image_path, cv2.IMREAD_COLOR) 

如果不能夠加載圖像的可能性(比如文件中傳遞給腳本的用戶),爲None測試

img = cv2.imread(image_path, cv2.IMREAD_COLOR) 
if img is None: 
    print("Can't load image, please check the path", file=sys.stderr) 
    sys.exit(1) 
相關問題