这是一段简单的代码,从命令行执行没有问题(Python Anaconda 3.5(:
import cv2
image = cv2.imread('image.jpg')
a=image.shape[0]
b=image.shape[1]
print("image size " + str(a) + " by " + str(b))
当它运行时,你会得到预期的结果:
image size 3254 by 4928
但是,当从记事本++ 7.8.1,Windows 7(运行时,我得到:
Traceback (most recent call last):
File "C:UsersMeDesktoptest.py", line 3, in <module>
a=image.shape[0]
AttributeError: 'NoneType' object has no attribute 'shape'
C:Program Files (x86)Notepad++>
这似乎很奇怪。 Notepad++ 中 python 的快捷方式位于 C:\Users\Me\AppData\Roaming\Notepad++ , in 'shortcuts.xml'. 这是:
<Command name="python_35" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /K python "$(FULL_CURRENT_PATH)"</Command>
关于为什么这可能不起作用的任何想法? 如果我输入"cmd/K python",我确实会得到Anaconda版本的python(我想知道我是否在我的系统上看到了另一个版本的python(。 这在读取图像时不会失败,所以我认为 OpenCV 仍在加载中。
解决方案:
这个问题似乎解决了问题:
从记事本加加号和当前目录运行文件
cmd/k cd/d $(CURRENT_DIRECTORY( && Python $(FULL_CURRENT_PATH(
令人困惑的问题是错误是由尝试访问image.shape[0]引起的。 如果图像不存在,则在读取时不会发生错误;即image=cv2.imread('imagexyz.jpg'(,但当你尝试访问"image"时,它会发生。 应该先检查图像是否存在,即:
import cv2
image = cv2.imread('image_not_there.jpg')
if(image is None):
print("no image")
else:
a=image.shape[0]
b=image.shape[1]
print("image size " + str(a) + " by " + str(b))