cv2.imread fails in script, not on command line

cv2.imread("some.jpg") fails to read many different jpgs. I have checked a million different things:

  • Run the same exact code in a terminal - reads and opens images just fine
  • I checked version numbers of both python and cv2 - they are exactly the same: 3.4.3 and 3.1.0 .
  • Used complete paths to files. No difference
  • Images exist: I've manually opened dozens to see if there's something thing
  • Timing: added pauses just to make sure this wasn't a timing issue.
  • Checked to make sure the img/filename exists with print(os.path.exists(filename)) # prints True
  • Hardcoded a file path into `img = imread("gif_pos_0pW-p-wb8U4_0.jpg") # print(img)... None
  • 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 is none and the resize line fails with: OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /home/user/opencv/modules/imgproc/src/imgwarp.cpp, line 3229

    This is Ubuntu 15.1 if it matters. Any thoughts on what could be causing this?

    Yes, I know this question exists elsewhere. The existing answers have not helped me. I have quadruple checked everything. There seems to be something else going on.

    The weirdest part is that cv2 reads the image just fine from the command line, with the same exact python and cv2 versions .

    EDIT: this is a script, so I'm just doing python3 train.py .


    The script might be executed as a different user, with different privileges or at a different location than executing the code on the command line.

  • Check existence of file in the code with os.path.isfile
  • provide details on the script (language) and how you start it. Is this a cron job, or an executable file? Start the script manually from the command line and only after that works create batch jobs or call it from other scripts.
  • Can you give examples of paths?
  • Does it work trying to load one single image located in the same directory, without using random.choice?)
  • Does the code below work with the image attached? It works for me.
  • 在这里输入图像描述

    import cv2
    
    img=cv2.imread("image.jpg")
    
    cv2.imshow('Test',img)
    if cv2.waitKey(0) & 0xff == 27:
        cv2.destroyAllWindows()
    
    链接地址: http://www.djcxy.com/p/54722.html

    上一篇: 检索python模块路径

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