pinkyuanxue的个人主页

一块来学习!!!

http://www.qtcn.org/bbs/u/126669  [收藏] [复制]

pinkyuanxue

奋斗.....

  • 23

    关注

  • 26

    粉丝

  • 39

    访客

  • 等级:新手上路
  • 总积分:9
  • 女,1990-01-28

最后登录:2013-07-11

更多资料

日志

OpenCV Ubuntu Qt

2012-04-24 15:05
转载自:http://hi.baidu.com/mehewen/blog/item/3f44d16c21e6cbe9431694b8.html

Ubuntu下的安装:

(1)下载更新软件包

apt-get update

(2)查询OpenCV相关软件包

apt-cache search opencv



(3)安装相关软件包


2.将OpenCV库加入到qtcreator
我的命令是 sudo gedit /usr/share/qt4/mkspecs/default/qmake.conf
在文件内添加了下面两句:
QMAKE_INCDIR = /usr/include/opencv
QMAKE_LIBS = -lcvaux -lcv -lcxcore -lhighgui -lml
3.用Qt编写OpenCV程序
在qt的工程文件(*.pro)内添加:
INCLUDEPATH += /usr/include/opencv

LIBS += /usr/lib/libcv.so \
/usr/lib/libcvaux.so \
/usr/lib/libcxcore.so \
/usr/lib/libhighgui.so \
/usr/lib/libml.so

如求方便,可以直接将上面添加的INCLUDEPATH和LIBS内容添加到
sudo gedit /usr/share/qt4/mkspecs/default/qmake.conf里,
这样以后就不用在每个工程里配置了,不过移植的时候就需要注意了。

4.实例
main.cpp(工程内的其他文件内容不变):
#include <QtGui/QApplication>
#include "widget.h"
#include <cv.h>
#include <highgui.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#define NUM_FRAME 300
void Video_to_image(char* filename)
{
printf("------------- video to image ... ----------------\n");

//初始化一个视频文件捕捉器
CvCapture* capture = cvCaptureFromAVI(filename);

//获取视频信息
cvQueryFrame(capture);
int frameH = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
int frameW = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
// printf("\tvideo height : %d\n\tvideo width : %d\n\tfps : %d\n\tframe numbers : %d\n", frameH, frameW, fps, numFrames);

//定义和初始化变量
int i = 0;
IplImage* img = 0;
char image_name[13];

cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE );

//读取和显示
while(1)
{

img = cvQueryFrame(capture); //获取一帧图片
cvShowImage( "mainWin", img ); //将其显示
char key = cvWaitKey(20);

sprintf(image_name, "%s%d%s", "image", ++i, ".jpg");//保存的图片名

cvSaveImage( image_name, img); //保存一帧图片


if(i == NUM_FRAME) break;
}

cvReleaseCapture(&capture);
cvDestroyWindow("mainWin");
}

void Image_to_video()
{
int i = 0;
IplImage* img = 0;
char image_name[13];

printf("------------- image to video ... ----------------\n");

//初始化视频编写器,参数根据实际视频文件修改
CvVideoWriter *writer = 0;
int isColor = 1;
int fps = 30; // or 25
int frameW = 400; // 744 for firewire cameras
int frameH = 240; // 480 for firewire cameras
writer=cvCreateVideoWriter("out.avi",CV_FOURCC('X','V','I','D'),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_FRAME)
{
sprintf(image_name, "%s%d%s", "image", ++i, ".jpg");
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);
}

cvReleaseVideoWriter(&writer);
cvDestroyWindow("mainWin");
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
char filename[13] = "cube4.avi"; //cube4.avi放在工程目录下

Video_to_image(filename); //视频转图片

Image_to_video(); //图片转视频
return a.exec();
}
分类:opencv|回复:0|浏览:1990|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-16 00:54
©2005-2016 QTCN开发网 版权所有 Gzip disabled