代码之家  ›  专栏  ›  技术社区  ›  M.K. Mandawar

在Google Colab中获取错误(错误:(-215:断言失败)_img。函数“imwrite”中为空()

  •  0
  • M.K. Mandawar  · 技术社区  · 3 年前

    我正在使用TensorFlow进行实时目标检测。因此,第一步是收集一些标志的图像。

    import cv2
    import os
    import time
    import uuid
    cv2.__version__
    
    labels = ['hi']
    number_imgs = 5
    
    IMAGES_PATH = os.path.join('Tensorflow', 'workspace', 'images', 'collectedimages')
    
    if not os.path.exists(IMAGES_PATH):
        if os.name == 'posix':
            !mkdir -p {IMAGES_PATH}
        if os.name == 'nt':
             !mkdir {IMAGES_PATH}
    for label in labels:
        path = os.path.join(IMAGES_PATH, label)
        if not os.path.exists(path):
            !mkdir {path}
    
    for label in labels:
        cap = cv2.VideoCapture(0)
        print('Collecting images for {}'.format(label))
        time.sleep(5)
        for imgnum in range(number_imgs):
            print('Collecting image {}'.format(imgnum))
            ret, frame = cap.read()
            imgname = os.path.join(IMAGES_PATH,label,label+'.'+'{}.jpg'.format(str(uuid.uuid1())))
            cv2.imwrite(imgname, frame)
            cv2.imshow('frame', frame)
            time.sleep(2)
    
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    cap.release()
    cv2.destroyAllWindows()
    

    此代码已在Jupyter notebook上成功运行,但未在Google Colab中运行 获取此错误

    Collecting images for hi Collecting image 0
    --------------------------------------------------------------------------- error                                     Traceback (most recent call last) <ipython-input-23-d176419936b4> in <module>()
          7         ret, frame = cap.read()
          8         imgname = os.path.join(IMAGES_PATH,label,label+'.'+'{}.jpg'.format(str(uuid.uuid1())))
    ----> 9         cv2.imwrite(imgname, frame)
         10         cv2.imshow('frame', frame)
         11         time.sleep(2)
    
    error: OpenCV(4.1.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   Ege Yıldırım    3 年前

    Google colab是基于浏览器的,因此没有API就无法访问网络摄像头等本地硬件。下面是访问计算机网络摄像头的示例代码。请注意,imshow在Google Colab中也不可用,您需要执行 from google.colab.patches import cv2_imshow 和电话 cv2_imshow(frame) 显示您的图像。

    https://colab.research.google.com/notebooks/snippets/advanced_outputs.ipynb#scrollTo=2viqYx97hPMi