Imdecode PiCamera и CV2 всегда возвращает None

У меня проблема с использованием CV2 на Raspberry PI с PiCamera. Это мой код:

camera = PiCamera()
camera.resolution = ( 320, 240 )
camera.framerate = 60
rawCapture = PiRGBArray( camera, size=( 320, 240 ) )
time.sleep(1)
start = time.time()

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):


    # and occupied/unoccupied text
    images = frame.array

    # show the frame
    cv2.imshow("Frame", images)


    cv_img = images.astype(np.uint8)

    gray  = cv2.imdecode(np.fromstring(cv_img, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
    image = cv2.imdecode(np.fromstring(cv_img, dtype=np.uint8), cv2.IMREAD_UNCHANGED)

    print("IMAGE: ",image)
    print("GRAY: ",gray)

image и grey всегда равны None, в то время как images и cv_image содержат правильный кадр. Я не могу понять, почему это не сработает, не могли бы вы мне помочь?

Заранее спасибо.


person Marcoc    schedule 24.12.2017    source источник
comment
Пожалуйста, попробуйте добавить подходящий код для проверки статуса возврата всех функций, которые вы вызываете - почему никто больше не утруждает себя проверкой того, что что-то работает?   -  person Mark Setchell    schedule 24.12.2017
comment
я уже все проверил   -  person Marcoc    schedule 24.12.2017


Ответы (1)


Я обнаружил, что picamera.array — надежный способ навести мост между picamara и cv2. В документах есть несколько примеров, которые не так уж далеки от ваших.

Как только вы окажетесь на cv2 территории,

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

- это типичный способ преобразования оттенков серого. Делать это с помощью imdecode излишне.

person Dave W. Smith    schedule 26.12.2017