因为在录制并生成avi的时候,程序突然崩溃导致,虽然写入的图片信息,但是avi最后没有帧数的信息。
导致了win播放器可以正常的播放,但是通过opencv没办法正确读取出avi的帧数。
问题1:
//获取avi文件基本信息
int nFps = videoCap.get(CV_CAP_PROP_FPS); //正常
int nFrameCount = videoCap.get(CV_CAP_PROP_FRAME_COUNT); //不正常:0
int n = videoCap.get(cv::CAP_PROP_FRAME_COUNT);//不正常:0
百度发现确实存在这种无法正常读取帧数的情况。
【cvgetCaptureProperty始终为cv_cap_prop_frame_count返回0!】
int nFrameCount = videoCap.get(CV_CAP_PROP_FRAME_COUNT);
int n = videoCap.get(cv::CAP_PROP_FRAME_COUNT);
if (nFrameCount <= 0)
{
ifstream videoFile(m_sAviPath, ios::in | ios::binary);
// Checking the availablity of the file
if (!videoFile) {
std::cout << "Couldn't open the input file " << m_sAviPath << std::endl;
}
else
{
char tempSize[4] = {1};
videoFile.seekg(0x30,

本文探讨了使用OpenCV处理损坏的AVI文件时遇到的问题,包括无法正确读取帧数、帧跳转功能失效及估计帧数的方法。提出了通过逐帧读取统计帧数的解决方案,并分析了该方案的局限性。
最低0.47元/天 解锁文章
1万+





