python - 从记事本++和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
但是,当从 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 的快捷方式位于“shortcuts.xml”中的 C:\Users\Me\AppData\Roaming\Notepad++ 中。这是:
<Command name="python_35" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /K python "$(FULL_CURRENT_PATH)"</Command>
关于为什么这可能不起作用的任何想法?如果我输入'cmd /K python',我会得到蟒蛇版本的python(我想知道我是否在我的系统上看到了另一个版本的python)。这在读取图像时不会失败,所以我认为 OpenCV 仍在加载中。
解决方案
解决方案:
这个问题似乎解决了这个问题:
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))
推荐阅读
- java - Springboot Elasticsearch 使用 Spring 数据 - 我不能使用存储库自己的方法
- javascript - 使用来自 json 源的数据填充引导表
- android - Expo / React Native WebView,动画中的onPress事件在Android上不起作用
- python - 添加一个新的 cpython 关键字
- javascript - 用 JavaScript 做一个问答游戏,我如何创建一个数据库来保存用户的分数?
- javascript - MultiValueDictKeyError 在 Django 中访问相同的表单元素
- php - 使用 RewriteRule 后未打开 index.php
- c# - 无法在 V/Studio 2019 中“跨步”进入代码
- java - Thymeleaf - 不会显示 6 个 getter 方法中的 1 个
- ffmpeg - FFMPEG 中的 `-map data-re` 选项有什么作用?