博主QQ:1356438802
QQ群:473383394——UVC&OpenCV47
本文实验平台:win7_64bits + OpenCV 2.4.10 + QT Creator 3.4.1 + QT 5.4.2(MSVC 2013, 32bit)
一、 编译环境的搭建参考下面这篇文章
二、 测试例程
下载链接:
http://pan.baidu.com/s/1nvNBgfv 密码:u04k
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
timer = new QTimer(this);
qDebug() << "3333333333333333\n";
}
Dialog::~Dialog()
{
timer->stop();
delete timer;
cvReleaseCapture(&capture);
delete ui;
}
void Dialog::on_BtnOpen_clicked()
{
capture = cvCaptureFromCAM(0);
if(NULL == capture)
{
qDebug() << "open camera failed!\n";
return;
}
timer->start(50); //50毫秒取一帧图片
//50ms超时,就去取图片帧
connect(timer, SIGNAL(timeout()), this, SLOT(getFrame()));
}
void Dialog::getFrame()
{
frame = cvQueryFrame(capture); //取图片帧
//将图片转换为Image对象,rgbSwapped是为了显示效果色彩好一些。
QImage image = QImage((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888).rgbSwapped();
ui->label->setPixmap(QPixmap::fromImage(image));
}
void Dialog::on_pushButton_clicked()
{
}
三、 编译问题
首先确定你使用的是哪个编译链及其版本号,我前一篇文章主要讲的是Opencv-MinGW-lib怎么编译生成,而这篇文章的案例实际上用MSVC-lib和MinGW-lib都可以编译!
1. 可以在.pro文件中,自适应编译链:
#MSVC
win32-msvc* {
message("win32-msvc include opencv INCLUDE and LIBS")
INCLUDEPATH+= $$PROJECT_DIR\include\opencv\
$$PROJECT_DIR\include\opencv2\
$$PROJECT_DIR\include
LIBS+= $$PROJECT_LIBDIR\opencv_calib3d2410d.lib\
$$PROJECT_LIBDIR\opencv_contrib2410d.lib\
$$PROJECT_LIBDIR\opencv_core2410d.lib\
$$PROJECT_LIBDIR\opencv_features2d2410d.lib\
$$PROJECT_LIBDIR\opencv_flann2410d.lib\
$$PROJECT_LIBDIR\opencv_gpu2410d.lib\
$$PROJECT_LIBDIR\opencv_highgui2410d.lib\
$$PROJECT_LIBDIR\opencv_imgproc2410d.lib\
$$PROJECT_LIBDIR\opencv_legacy2410d.lib\
$$PROJECT_LIBDIR\opencv_ml2410d.lib\
$$PROJECT_LIBDIR\opencv_objdetect2410d.lib\
$$PROJECT_LIBDIR\opencv_video2410d.lib\
$$PROJECT_LIBDIR\opencv_nonfree2410d.lib\
$$PROJECT_LIBDIR\opencv_stitching2410d.lib\
$$PROJECT_LIBDIR\opencv_ts2410d.lib\
$$PROJECT_LIBDIR\opencv_videostab2410d.lib\
$$PROJECT_LIBDIR\opencv_ocl2410d.lib\
$$PROJECT_LIBDIR\opencv_photo2410d.lib\
$$PROJECT_LIBDIR\opencv_superres2410d.lib
}
#MinGW
win32-g++ {
message("win32-mingw include opencv INCLUDE and LIBS")
INCLUDEPATH+= D:\openCV_2.4.10\for_minGW_qt486_x64\include\opencv\
D:\openCV_2.4.10\for_minGW_qt486_x64\include\opencv2\
D:\openCV_2.4.10\for_minGW_qt486_x64\include
LIBS+= D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_calib3d2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_contrib2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_core2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_features2d2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_flann2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_gpu2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_highgui2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_imgproc2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_legacy2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_ml2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_objdetect2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_video2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_nonfree2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_stitching2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_ts2410.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_videostab2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_ocl2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_photo2410.dll.a\
D:\openCV_2.4.10\for_minGW_qt486_x64\lib\libopencv_superres2410.dll.a
}
2. MinGW编译链配置
3. MSVC编译链配置
对于MSVC-lib,特别注意要在openCV中找到对应版本的lib 和 bin,一定要注意这个,否则作死都编译不过去。
VisualStudio的版本编号和MSVC编译器的版本编号是不同的!我这里安装VisuaoStudio时装的是VC11-x86编译器,所以opencv lib选择如下:
最后pro文件要写好,否则编译的时候头文件找不到,或者链接的时候找不到库文件(环境变量没设置)。
有问题可以联系我QQ:1356438802