Qt4.8.5+OpenCV2.4.X+QtCreator2.1 开发环境 win7/8安装配置指南 (转载)

转载自:http://www.cnblogs.com/changkaizhao/articles/3269323.html

重要提示:有些由于版本不匹配会导致安装不不成功,请尽量选择经过测试安装的版本组合,本文版本组合(Qt4.8.5+opencv2.4.X+QCreator2.1 )经过测试通过运行稳定。

Qcreator 2.1只匹配 mingw 4.4.0 ,其他版本mingw可能会出现错误。Qt 4.8.5可能不匹配高版本QtCreator。

准备如下文件:

1.QCreator2.1 qt-creator-win-opensource-2.1.0.exe 50MB
2.Qt4.8.5 Qt libraries 4.8.5 for Windows (minGW 4.4, 317 MB)
通常情况下QCreator中带有mingw_gcc 4.4.0 编译器,如果不想用Qcreator2.1 IDE那么需要自行下载mingw4.4.0.

mingw_gcc.4.4.0 下载 mingw无需安装解压后即可。

这里我们由于选择使用IDE QCreator所以可以不用自己下载安装mingw 编译器 (一种C++编译器)。

安装QCreator2.1

双击下载好的qt-creator-win-opensource-2.1.0.exe

会出现一系列的对话框…….

在出现的choose install location的对话框如下:

这里写图片描述

我以安装路径: D:\Qt\qtcreator-2.1.0 为例

注意安装完成后在D:\Qt\qtcreator-2.1.0 文件夹内会出现 mingw 文件夹 我们下一步会 用到。

继续安装结束

安装Qt4.8.5

双击下载好的 Qt_libraries_4.8.5_for_windows.exe.

会出现一系列的对话框…….

在出现的choose install location的对话框, 选择 Qt Libraries 的 安装目录。我以 D:\Qt\4.8.5 为例

在出现的 MinGw Installation 对话框, 选择在上面出现的mingw 文件夹路径

我以 D:\Qt\qtcreator-2.1.0\mingw 为例

然后继续到安装结束

配置环境变量

在系统环境变量中的path 添加以下路径

D:\Qt\qtcreator-2.1.0\mingw\bin;D:\Qt\4.8.5\bin;D:\Qt\qtcreator-2.1.0\bin

注意路径中有空格是不允许的,为了避免错误尽量不要手动输入。

新建两个环境变量

变量名 QMAKESPEC 值 设置为 D:\Qt\4.8.5\mkspecs\win32-g++

变量名 QTDIR 值 设置为 D:\Qt\4.8.5\

重启电脑,QCreator2.1 + Qt_lib_4.8.5 环境搭建完毕。下面继续opencv 的安装

OpenCV 2.2 安装

准备如下文件:

1.opencv2.2 http://opencv.org/downloads.html 进入地址后选择 OpenCV for Windows

  1. Cmake 2.8.9 下载

解压 opencv2.2文件夹 解压后的文件夹我放到 D:\opencv2.2 下,也就是opencv2.2目录为 D:\opencv2.2\OpenCV-2.2.0

然后安装cmake ,安装后在系统环境变量中的path 添加以下路径 D:\cmake\bin

D:\cmake\bin是CMake2.8.9安装后的路径中中的bin文件夹 重启电脑

过程很简单 安装双击打开Cmake

在出现的对话框中选择 where is the source code 路径为opencv2.2 目录。
这里写图片描述
然后选择 where to build the binaries:的路径 ,这个路径是我们要保存Cmake后的opencv2.2的路径,这个路径我们可以任意指定,我以D:\opencv2为例。

下一步点击 configure 按钮会出现如下对话框:按图选择就OK

这时会出现如下对话框,勾选生成列表中的WITH_OPENGL和WITH_QT两项,其他项最好不要改动
这里写图片描述

再次点几次Configure 按钮,直到红色全部消失,然后点击generate按钮,生成makefile文件,成功后,底下会提示Generating done。

然后打开CMD,进入刚才设置的where to build the binaries:路径(D:\opencv2),输入mingw32-make命令开始编译
这里写图片描述

然后确认,编译opencv2.2库

这个过程非常漫长大概需要1个小时左右。最后会出现下面提示。

这里写图片描述

然后接着输入 mingw32-make install 确认 然后几分钟后会出现如下提示

这里写图片描述

至此opencv2.2 cmake 结束

配置环境变量

在系统环境变量中的path 添加以下路径

D:\opencv2\bin

重启电脑 opencv库 编译结束

配置 Qcreator并测试

新建工程项目

然后选择工具->选项->Qt4

设置mingw路径,如下图所示:

这里写图片描述

然后打开项目菜单点击添加按钮,选择Path 中的Qt
这里写图片描述

然后选择编辑,打开文件对话框和显示图片的代码都在main函数中,下面是源代码(其中的困难点在于Qt的图片数据类型QImage格式与OpenCV的Mat格式不一致,因此要实现转换,这通过下面的函数实现Mat到QImage的转换):

widget.h文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QImage>
#include <QLabel>
#include <QFileDialog>
#include <QTimer>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_openButton_clicked();
   //void displayMat(const cv::Mat &image);
    void displayMat(Mat image);



private:
    Ui::Widget *ui;
    cv::Mat image;
};

#endif // WIDGET_H

Widget.cpp文件:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_openButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),
                                ".",tr("Image Files (*.png *.jpg *.bmp)"));
    qDebug()<<"filenames:"<<fileName;
    image = cv::imread(fileName.toAscii().data());
    cv::namedWindow((fileName.toAscii().data()),CV_WINDOW_AUTOSIZE);    //display use a new window
    cv::imshow((fileName.toAscii().data()), image);
  //  displayMat(image);                      //display by the label
}

//void Widget::displayMat(const cv::Mat &image)
void Widget::displayMat(Mat image)
{
    Mat rgb;
    QImage img;
    if(image.channels()==3)
    {
        //cvt Mat BGR 2 QImage RGB
        cvtColor(image,rgb,CV_BGR2RGB);
        img =QImage((const unsigned char*)(rgb.data),
                    rgb.cols,rgb.rows,
                    rgb.cols*rgb.channels(),
                    QImage::Format_RGB888);
    }
    else
    {
        img =QImage((const unsigned char*)(image.data),
                    image.cols,image.rows,
                    image.cols*image.channels(),
                    QImage::Format_RGB888);
    }

    ui->imglabel->setPixmap(QPixmap::fromImage(img));
    ui->imglabel->resize(ui->imglabel->pixmap()->size());
    //QLabel *label = new QLabel("", 0);
    //label->setPixmap(QPixmap::fromImage(img));
    //label->resize(ui->imagelabel->pixmap()->size());

}

将下面路径复制到pro文件里并保存
INCLUDEPATH+=D:\opencv2\include\opencv\
D:\opencv2\include\opencv2\
D:\opencv2\include

LIBS+=D:\opencv2\lib\libopencv_calib3d220.dll.a\
        D:\opencv2\lib\libopencv_contrib220.dll.a\
        D:\opencv2\lib\libopencv_core220.dll.a\
        D:\opencv2\lib\libopencv_features2d220.dll.a\
        D:\opencv2\lib\libopencv_flann220.dll.a\
        D:\opencv2\lib\libopencv_gpu220.dll.a\
        D:\opencv2\lib\libopencv_highgui220.dll.a\
        D:\opencv2\lib\libopencv_imgproc220.dll.a\
        D:\opencv2\lib\libopencv_legacy220.dll.a\
        D:\opencv2\lib\libopencv_ml220.dll.a\
        D:\opencv2\lib\libopencv_objdetect220.dll.a\
        D:\opencv2\lib\libopencv_video220.dll.a

此外,widget.ui界面设计如下(“Open”对象名称openButton,“Open the Image”对象名称imglabel):
这里写图片描述

最后运行程序,显示如下:
这里写图片描述

至此,整个开发环境搭建可算大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值