【问题标题】:cv2.imread fails in script, not on command linecv2.imread 在脚本中失败,而不是在命令行中
【发布时间】:2016-09-29 21:29:40
【问题描述】:

cv2.imread("some.jpg") 无法读取许多不同的 jpg。我检查了一百万种不同的东西:

  1. 在终端中运行完全相同的代码 - 可以很好地读取和打开图像
  2. 我检查了 python 和 cv2 的版本号 - 它们完全相同:3.4.33.1.0
  3. 使用了文件的完整路径。没有区别
  4. 图片存在:我手动打开了几十张看看有没有什么东西
  5. 计时:添加暂停只是为了确保这不是计时问题。
  6. 检查以确保img/filenameprint(os.path.exists(filename)) # prints True 存在
  7. 将文件路径硬编码到 `img = imread("gif_pos_0pW-p-wb8U4_0.jpg") # print(img)... 无
filename = random.choice(filename_list)
print("reading:", filename) # prints correct/verified jpg paths
sleep(.5)
img = cv2.imread(filename)
sleep(.3)
print(img) # none
read_image = cv2.resize(img, (IMAGE_WIDTH, IMAGE_HEIGHT), 3)

img 为 none,调整大小行失败:OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /home/user/opencv/modules/imgproc/src/imgwarp.cpp, line 3229

如果重要的话,这是 Ubuntu 15.1。有什么可能导致这种情况的想法吗?

是的,我知道这个问题存在于其他地方。 现有的答案对我没有帮助。我已经对所有内容进行了四次检查。 似乎还有其他事情发生。

最奇怪的部分是 cv2 从命令行很好地读取图像,具有完全相同的 python 和 cv2 版本

编辑:这是一个脚本,所以我只是在做python3 train.py

【问题讨论】:

  • 你检查sys.executable两者是否相同?
  • 不,但我现在就试试。编辑:它是一样的......
  • 你是说一个图像被打开而另一个没有?还是根本没有打开任何图像?
  • 您是否检查过同一目录中没有路径的文件名?发生什么了?你有没有检查过没有random.choice,直接输入一个路径?
  • 根本没有图像被打开。是的,我已在脚本目录中放置了一部分图像并更改了读取的目录。那没有效果。我已经将一个检查过的文件路径字符串硬编码到imread,是的。

标签: python opencv opencv3.0


【解决方案1】:

脚本可能以不同的用户、不同的权限或在不同的位置执行,而不是在命令行上执行代码。

  • 使用os.path.isfile检查代码中文件是否存在
  • 提供有关脚本(语言)以及如何启动它的详细信息。这是一个 cron 作业,还是一个可执行文件?从命令行手动启动脚本,然后才能创建批处理作业或从其他脚本调用它。
  • 您能举例说明路径吗?
  • 在不使用 random.choice 的情况下尝试加载位于同一目录中的单个图像是否有效?)
  • 下面的代码是否适用于附加的图像?它对我有用。

import cv2

img=cv2.imread("image.jpg")

cv2.imshow('Test',img)
if cv2.waitKey(0) & 0xff == 27:
    cv2.destroyAllWindows()

【讨论】:

  • 忘了补充一下,我确实检查了图像是否存在类似于您的os.path.isfile。将添加该和脚本详细信息
  • 已从与我运行解释器的相同图像上的同一目录运行脚本。不应该是一样的吗?很确定我昨晚使所有图像都可读,但会仔细检查。也许我没有递归地使图像可读?
  • 在 unix 系统和脚本中,我将使用完整路径。
  • 是的,您的代码可以正常工作,基本上它的副本和我的一张图片也是如此。所以问题在于代码执行之前的代码,这完全令人困惑。谢谢您的帮助。看看我是否可以发布更多代码。
  • 查看这里以查找您的代码执行的位置:stackoverflow.com/questions/5137497/…
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 2019-05-28
  • 2021-12-29
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2020-05-02
相关资源
最近更新 更多