视频捕获读取给我这个错误。它最近在我更新到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与网络摄像头配合正常。因此,不清楚问题出在哪里。
谢谢您的时间。