2017-06-23 99 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) 
相关问题