Чтение видеокадра дает мне эту ошибку.Это началось недавно, когда я обновился до opencv4.Нет ошибок при установке opencv4.libswscale обновлен, у меня есть libswscale.so.4.8.100.
Код представляет собой простое «открытое» и «прочитанное» видео для выявления проблемы:
#include<opencv2/core.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<string>
#include <iostream>
int main(int argc, char **argv){
cv::VideoCapture video;
std::string filename(argv[1]);
std::cout << "filename " << filename << std::endl;
std::cout << "video.open " << video.open(filename) << std::endl;
union {
char ch[5] = {0};
int i4cc;
} fourcc;
fourcc.i4cc = (int) video.get(cv::CAP_PROP_FOURCC);
std::cout << "Fourcc " << fourcc.ch << std::endl;
cv::Mat frame;
while(true){
std::cout << "video.read " << video.read(frame) << ", Mat.rows " << frame.rows << std::endl;
cv::imshow("imagen", frame);
}
}
вывод такой:
filename ../Archivos/Vuelta al Lab Uno 720p.MP4
video.open 1
Fourcc avc1
Assertion desc failed at src/libswscale/swscale_internal.h:668
VideoCapture открывает видеофайл, показывает свойство fourcc, а затем не может прочитать первое изображение.
Если вы спросите, видеофайл в порядке, я попытался с другим видеофайлы и другие форматы видео, с той же ошибкой.Эти видео хорошо воспроизводятся с ffmpeg.ffplay!
Кстати, VideoCapture.read отлично работает с веб-камерой.Итак, неясно, где проблема.
Спасибо за ваше время.