cv2.imread在脚本中失败,而不是在命令行上

时间:2016-05-31 18:21:14

标签: python opencv opencv3.0

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

  1. 在终端中运行相同的确切代码 - 读取并打开图片就好了
  2. 我检查了python和cv2的版本号 - 它们完全相同:3.4.33.1.0
  3. 使用完整的文件路径。没有区别
  4. 图片存在:我手动打开了几十个,看看是否有什么东西
  5. 时间:添加暂停只是为了确保这不是时间问题。
  6. 选中以确保img/filename存在print(os.path.exists(filename)) # prints True
  7. 将文件路径硬编码为`img = imread(“gif_pos_0pW-p-wb8U4_0.jpg”)#print(img)...无
  8. 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

1 个答案:

答案 0 :(得分:3)

脚本可能以不同的用户身份执行,具有不同的权限,或者与在命令行上执行代码的位置不同。

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

enter image description here

import cv2

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

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