从记事本++和OpenCV函数执行python代码时出错



这是一段简单的代码,从命令行执行没有问题(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 &quot;$(FULL_CURRENT_PATH)&quot;</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))

最新更新