2016-12-14 6 views
0

Я могу запустить ту же программу в Windows. Я вижу свою камеру с помощью lsusb в Ubuntu 16.04, 64 бит. Камера представляет собой инфракрасную камеру OSVR.Ошибка Ubuntu OpenCV во время чтения webCamera

Моя программа

import numpy as np 
import cv2 
camera = cv2.VideoCapture(0) 
while(True): 
    # Capture frame-by-frame 
    ret, frame = camera.read() 

    cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

    cv2.imshow('camera', frame) 

    # k = cv2.waitKey(30) 

# When everything done, release the capture 
camera.release() 
cv2.destroyAllWindows() 

Результаты:

[email protected]:~/project/osvrCamera$ python test.py 
select timeout 
select timeout 
OpenCV Error: Assertion failed (!buf.empty() && buf.isContinuous()) in imdecode_, file /tmp/binarydeb/ros-kinetic-opencv3-3.1.0/modules/imgcodecs/src/loadsave.cpp, line 490 
Traceback (most recent call last): 

File "test.py", line 8, in <module> 
ret, frame = camera.read() 
cv2.error: /tmp/binarydeb/ros-kinetic-opencv3-3.1.0/modules/imgcodecs/src/loadsave.cpp:490: error: (-215) !buf.empty() && buf.isContinuous() in function imdecode_ 

ответ

0

Проверить, если кадр не empty() первый (может быть кулачок/кадр не полностью инициализирован при попытке конвертировать/показать его:

import numpy as np 
import cv2 
camera = cv2.VideoCapture(0) 
while(True): 
    # Capture frame-by-frame 
    ret, frame = camera.read() 
    if not frame.empty(): 
     cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

     cv2.imshow('camera', frame) 

    # k = cv2.waitKey(30) 

# When everything done, release the capture 
camera.release() 
cv2.destroyAllWindows()