【问题标题】:error in executing python code from notepad++ and an OpenCV function [duplicate]从记事本++和OpenCV函数执行python代码时出错[重复]
【发布时间】:2019-12-18 16:07:53
【问题描述】:

这是一段简单的代码,可以从命令行毫无问题地执行(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

但是,当从 notepad++ 7.8.1、Windows 7) 运行时,我得到:

Traceback (most recent call last):
  File "C:\Users\Me\Desktop\test.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++ ,在“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',我会得到蟒蛇版本的python(我想知道我是否在我的系统上看到了另一个版本的python)。这不会在读取图像时失败,所以我认为 OpenCV 仍在加载中。

【问题讨论】:

标签: python opencv notepad++


【解决方案1】:

解决方案:

这个问题似乎解决了问题:

Running File from Notepad Plus Plus and Current Directory

cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)

令人困惑的问题是错误是由尝试访问 image.shape[0] 引起的。如果图像不存在,则 imread 不会发生错误;即 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))

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多