找回密码
 注册
Simdroid-非首页
查看: 137|回复: 1

[其他研讨] 在matheamtica里编译opencv的.exe文件并把图片序列压缩成avi视频

[复制链接]
发表于 2012-3-20 15:23:10 | 显示全部楼层 |阅读模式 来自 上海浦东新区
本帖最后由 HyperGroups 于 2012-3-23 17:28 编辑

因为我的系统是win 8cp 32bit 而且vs版本也是vs11,默认搜不到编译器,所以也要指定一下,其他c编译器也类同。

Needs["CCompilerDriver`"]
CCompilers[]
$CCompiler = {"Compiler" ->
    CCompilerDriver`VisualStudioCompiler`VisualStudioCompiler,
   "CompilerInstallation" ->
    "C:\\Program Files\\Microsoft Visual Studio 11.0"};
includeDirectory = {"C:\\Program Files\\opencv\\build\\include",
   "C:\\Program Files\\opencv\\build\\include\\opencv",
   "C:\\Program Files\\opencv\\build\\include\\opencv2"},
linkerOptions =
  StringSplit[
   "opencv_calib3d231d.lib;opencv_contrib231d.lib;opencv_core231d.lib;\
opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib;\
opencv_highgui231d.lib;opencv_imgproc231d.lib;opencv_legacy231d.lib;\
opencv_ml231d.lib;opencv_objdetect231d.lib;opencv_ts231d.lib;opencv_\
video231d.lib", ";"];
targetDirectory = Directory[] <> "\\MathematicaCV";
头文件的识别类似是这样子加些选项,库文件和头文件的指定也是,纠结了一下午,终于成功了。其实没啥特别的,主要还是
"IncludeDirectories" "LibraryDirectories""LinkerOptions"这三个选项都要设置。之前一直失败就是没有设置LinkerOptions
Debug设置完后可以方便看调试啦

mainFile = Import["picsToAvi.txt"]
picsToavi =
CreateExecutable[mainFile, "picsToavi",
  "IncludeDirectories" -> includeDirectory, "Language" -> "C++",
  "LibraryDirectories" ->
   "C:\\Program Files\\opencv\\build\\x86\\vc10\\lib",
  "Debug" -> True, "LinkerOptions" -> linkerOptions,
  "TargetDirectory" -> targetDirectory]

opencv的
c++示例
#include "cv.h"
#include "highgui.h"
void Image_to_video(int argc, char *argv[])
{
int i = 0;
IplImage* img = 0;
char image_name[1000];
printf("------------- image to video ... ----------------\n");
//初始化视频编写器,参数根据实际视频文件修改
CvVideoWriter *writer = 0;
int num_frames = 73;
int isColor = 1;
int fps = 5; // or 25
int frameW = 740; // 744 for firewire cameras
int frameH = 700; // 480 for firewire cameras
writer=cvCreateVideoWriter("NewOut.avi",CV_FOURCC('M','J','P','G'),fps,cvSize(frameW,frameH),isColor);
printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n", frameH, frameW, fps);
//创建窗口
cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );
while(i<num_frames)
{
sprintf(image_name, "C:\\Users\\Simplexity\\Documents\\swordCircle1",++i);

img = cvLoadImage(image_name);
if(!img)
{
printf("Could not load image file...\n");
exit(0);
}
cvShowImage("mainWin", img);
char key = cvWaitKey(20);
cvWriteFrame(writer, img);
cvWaitKey(20);
}
cvReleaseVideoWriter(&writer);
cvDestroyWindow("mainWin");
}

int main(int argc, char *argv[])
{
Image_to_video(); //图片转视频
return 0;
}


大概就是这个样子啦。类似的编译成功过的例子有,读取视频,读取图片,写入视频,把没压缩过的avi弄成mjpg的avi,把jpg图片序列弄成mjpg的avi

评分

1

查看全部评分

发表于 2012-3-22 16:38:20 | 显示全部楼层 来自 北京
Simdroid开发平台
发一个完整的攻略呗
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 22:01 , Processed in 0.033506 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表