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

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

  • 在终端中运行相同的确切代码 - 读取并打开图像就好了
  • 我检查了python和cv2的版本号 - 它们完全一样: 3.4.33.1.0
  • 使用完整的文件路径。 没有不同
  • 图像存在:我手动打开了几十个,看看是否有什么东西
  • 时机:增加暂停只是为了确保这不是一个时间问题。
  • 检查以确保img/filenameprint(os.path.exists(filename)) # prints True存在print(os.path.exists(filename)) # prints True
  • 将一个文件路径硬编码为`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调整大小时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


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

  • 使用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()
    
    链接地址: http://www.djcxy.com/p/54721.html

    上一篇: cv2.imread fails in script, not on command line

    下一篇: Get my current path using a python script as a command