OpenCV2计算机视觉编程手册(1)

首先启动Qt Creator,我们将来创建gui应用。

打开mainwindow.ui,拖动两个push button到对话框中,同时修改两个按钮的名字,分别为open image 和process.

然后分别右击两个按钮,出现:

 

OpenCV2计算机视觉编程手册(1)_第1张图片

然后会跳到mainwindow.cpp中,

此时我们需要添加如下代码:

 

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,
     tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)"));

    image= cv::imread(fileName.toAscii().data());
    cv::namedWindow("Original Image");
    cv::imshow("Original Image", image);
}

void MainWindow::on_pushButton_2_clicked()
{
    cv::flip(image,image,1);
    cv::namedWindow("Output Image");
    cv::imshow("Output Image", image);
}

但在之前对mainwindow.h头文件进行修改,不然会出问题:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//添加如下代码
#include <QMainWindow>
#include <QtGui>
#include <QFileDialog>
#include <opencv2/opencv.hpp> 
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

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

#endif // MAINWINDOW_H


 

自此代码部分完成。便开始编译,但出现下面的错误:

OpenCV2计算机视觉编程手册(1)_第2张图片

然后查阅了下, 发现在新版的qt5.1中取消了toAscii函数,用toLatin1函数代替。

修改了下:

 image= cv::imread(fileName.toLatin1().data());


好了,运行成功。

如图:

OpenCV2计算机视觉编程手册(1)_第3张图片

 


 代码下载地址:http://download.csdn.net/download/xiaojidan2011/5923177

 

接下来我们添加一个标签label,通过ui对象中相应的指针访问该对象,代码如下:

cv::flip(image, image,1);
    cv::cvtColor(image,image,CV_BGR2RGB);
    QImage img=QImage( (const unsigned char*)(image.data),image.cols,image.rows,
                       QImage::Format_RGB888);
    ui->label->setPixmap(QPixmap::fromImage(img));
    ui->label->resize(ui->label->pixmap()->size());


 

如图所示:

OpenCV2计算机视觉编程手册(1)_第4张图片

 

 

 

你可能感兴趣的:(OpenCV2计算机视觉编程手册(1))