Странные результаты с использованием V4L2, Python, на Raspberry Pi 3 - PullRequest
0 голосов
/ 26 сентября 2018

Странный результат кодирования, который не имеет особого смысла.Я пытаюсь сделать снимок с камеры Raspberry Pi с помощью драйвера V4L2, так как мне нужно использовать cv2 для обработки изображений.Я использую Python для написания кода.

Странность вращается вокруг захвата изображений с помощью cv2.когда я набираю следующие команды

import cv2
from matplotlib import pyplot

camera = cv2.VideoCapture(0)
grab,frame = camera.read()
pyplot.imshow(frame)

, я могу взять кадр и отобразить его с помощью matplotlib.Когда я беру второй кадр

grab,frame2 = camera.read()
pyplot.imshow(frame2)

Код захватывает второй кадр и отображает его совершенно нормально.

Однако, когда я пытаюсь использовать существующую переменную, такую ​​как frame или frame2 камера не будет захватывать новый кадр и просто печатать предыдущий кадр.

Я попытался очистить переменную, набрав

frame = []
grab,frame = camera.read()
pyplot.imshow(frame)    

, но это не решило проблему, все еще печатаяпредыдущий кадр.

1 Ответ

0 голосов
/ 26 сентября 2018

Я думаю, что вы "страдаете от буферизации" !

Когда OpenCV читает кадр, он имеет тенденцию собирать несколько, я думаю, что это 5 кадровили так, или может быть какой-то алгоритм, который определяет доступную память или что-то подобное.

В любом случае, ответ - прочитать еще несколько кадров, чтобы очистить буфер, и тогда он получит несколько свежих кадров.

...