VideoWriter无法在Win7-64Bit VM上运行

时间:2013-07-10 14:53:03

标签: c++ opencv windows-7-x64 codec

我编写了以下代码,试图保存图片并计数数百,最后将其全部抓取到带有以下编解码器MP42(MPEG4-V2)的视频

#include <stdAfx.h>
#include <iostream>
#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std;
int n=0;
char a;
int main(int, char** argv)
{
    Mat image= imread("C:\\Users\\Metin\\Desktop\\images.jpg");
    Mat newimage;
    VideoWriter vide ("Hopdedik.avi",CV_FOURCC('M','P','4','2'),30.0,image.size());
    vide.open("Hopdedik.avi",CV_FOURCC('M','P','4','2'),30.0,image.size()); 
    for(int n=0; n<100;n++){
        cout<<n<<'\n';
        std::string s= to_string(static_cast<long long>(n));
        image.copyTo(newimage);
        putText(newimage,s,Point(100,40),cv::FONT_HERSHEY_COMPLEX,2,cv::COLORMAP_COOL,2,2,false);
        imshow("asd",newimage);     
        if(!vide.isOpened())cout<<"can not opened";     
        vide.write(newimage);
        waitKey(10);        
    }
    vide.release(); 
    return 0;
}

我开始在Release模式下调试并将.exe文件复制到Virtualbox Win7-64位。在我放入必要的.dll文件exe之后,但代码无法正确创建视频。

我尝试安装以下两个编解码器: http://www.fourcc.org/downloads/angel-potion-mpeg-4--8/ 和Indeo是:http://www.afreecodec.com/codec-by-code/iv45-160.html

但它不起作用。

1 个答案:

答案 0 :(得分:2)

一旦我遇到类似的问题,opencv无法读取视频。没有任何警告。原因是自动字符串生成器导致系统中缺少“opencv_mmpeg.dll”。所以,我调试了cap_ffmpeg.cpp,发现了这个:

#if defined WIN32 || defined _WIN32
    const char* module_name = "opencv_ffmpeg"
        CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)
    #if (defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__)
        "_64"
    #endif
        ".dll";

因此,将 opencv_ffmpeg_64.dll 复制到您的文件夹中,您可能会得到一些结果。否则,您需要深入调试。首先在文件中插入opencv / modules / highgui / src / cap.cpp文件(以及需要编译的头文件),这样你就可以逐行调试。我想还需要许多其他文件才能深入到代码中。