Мне конкретно нужно одно изображение каждый раз, когда я вызываю cap.grab() и cap.retieve(), но, похоже, этот буфер есть внутри объекта «cap», поэтому вместо получения отдельных мгновенных изображений я получаю последовательность/изображения изображений, когда я щелкаю изображения, а затем после 3/4 кадра — новая последовательность.
Как получить отдельные кадры?
cap — это объект VideoCapture, maxCount — размер вектора.
Код: Выделить всё
void CamLoop::nextFrame() {
.
.
.
//if first loop fill a vector with random Mats from camera
if (firstLoop) {
Mat buff;
cap >> buff;
for(int i = 0; i> buff;
buffer[counter] = buff;
setMouseCallback( "Camera", mouseFunc, this );
imshow("Camera", buffer[counter]);
waitKey(1);
}
.
.
.
counter++;
}
РЕДАКТИРОВАТЬ
Проблема в том, что VideoCapture имеет буфер, попробуйте это на своем компьютере в режиме отладки, кадры не отображаются в реальном времени, как мне решить эту проблему?
Я пробовал использовать
Код: Выделить всё
cap.set(CV_CAP_PROP_BUFFERSIZE,1);
Код: Выделить всё
VIDEOIO ERROR: V4L2: setting property #38 is not supported
Код: Выделить всё
cap.set(CV_CAP_PROP_MODE,1);
Код: Выделить всё
VIDEOIO ERROR: V4L2: setting property #9 is not supported
Это может быть камера с буфером, а не сам объект VideoCapture.
Подробнее здесь: https://stackoverflow.com/questions/373 ... d-retrieve
Мобильная версия