我是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 :(得分:1)
函数
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)
如果无法加载图片(例如用户将文件传入您的脚本), test 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)