OpenCV显示I420中编码的avi文件 我试图在Windows 7上使用VisualC++ 2010 Express使用OpenCV2.4.2编写视频处理应用程序,但是我在显示某些AVI文件方面遇到了麻烦。大多数都显示正确,但当我使用以I420格式编码的AVI文件时,我得到的只是一个带条纹的粉红色图像,它在常规媒体播放器中正确显示每一帧
显示的输出:OpenCV显示I420中编码的avi文件 我试图在Windows 7上使用VisualC++ 2010 Express使用OpenCV2.4.2编写视频处理应用程序,但是我在显示某些AVI文件方面遇到了麻烦。大多数都显示正确,但当我使用以I420格式编码的AVI文件时,我得到的只是一个带条纹的粉红色图像,它在常规媒体播放器中正确显示每一帧,c++,video,opencv,avi,C++,Video,Opencv,Avi,显示的输出: 目前,我使用C++ API,但是当我使用这个页面的C API代码时,同样的事情发生了。我觉得这很奇怪,因为在这个网站上的大多数答案和网络资源中,他们明确建议使用I420编码。有没有人知道是什么原因造成的,或者如何修复 下面是我正在使用的代码的精简版本: int main(int argc, char** argv){ string fname = "test.avi"; VideoCapture capture(fname); if(!capture.isOpened()){
目前,我使用C++ API,但是当我使用这个页面的C API代码时,同样的事情发生了。我觉得这很奇怪,因为在这个网站上的大多数答案和网络资源中,他们明确建议使用I420编码。有没有人知道是什么原因造成的,或者如何修复
下面是我正在使用的代码的精简版本:int main(int argc, char** argv){
string fname = "test.avi";
VideoCapture capture(fname);
if(!capture.isOpened()){
cerr << "error opening " << fname << endl;
return -1;
}
Mat frame;
namedWindow("output");
double rate = capture.get(CV_CAP_PROP_FPS);
int delay = 1000/rate;
while(true){
if(!capture.read(frame)) break;
cv::imshow("output", frame);
if(waitKey(delay) >= 0) break;
}
capture.release();
return 0;
}
我使用的是OpenCV的预编译版本,如果这有区别的话http://sourceforge.net/projects/opencvlibrary/.好的,所以我设法在另外几台计算机上进行了测试。一个刚刚崩溃,另一个视频播放得很好。事实证明,在默认OpenCV编译中启用FFMPEG存在问题,而未压缩的AVI存在问题。在禁用FFMPEG的情况下重新编译OpenCV,或者使用不同的编解码器来压缩视频。好的,所以我设法在其他几台计算机上进行了测试。一个刚刚崩溃,另一个视频播放得很好。事实证明,在默认OpenCV编译中启用FFMPEG存在问题,而未压缩的AVI存在问题。在禁用FFMPEG的情况下重新编译OpenCV,或者使用其他编解码器来压缩视频。您是否更新了系统编解码器?可能是编解码器故障造成的。我刚刚安装了k-lite mega编解码器包,但它仍在发生。您是否更新了系统编解码器?一个错误的编解码器可能是造成这种情况的原因。我刚刚安装了k-lite mega编解码器包,它仍然在发生。