一、第一个例子
    其实在目前这种情况下,配置OpenCV+QT的环境还是非常直接,简单的。
    最为重要的是编写正确的.pro文件,再原有基础上添加以下内容:
INCLUDEPATH += /usr/include/opencv \
                /usr/include/opencv2
LIBS += /usr/lib/gnueabihf/libopencv_highgui.so \
        /usr/lib/gnueabihf/libopencv_core.so    \
        /usr/lib/gnueabihf/libopencv_imgproc.so

指向正确的include和lib文件。实现以下结果,读取显示lena.jpg

 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <QFileDialog>
using namespace cv;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButton_clicked()
{
  //第3个参数表示查找文件时从哪个目录开始,如果为"."的话,表示从该工程目录开始查找,最后那个参数的过滤器的名字之间
  //要用空格,否则识别不出来
  QString img_name = QFileDialog::getOpenFileName( this, tr("Open Image"), ".",tr("Image Files(*.png *.jpg *.jpeg *.bmp)"));
  //toAscii()返回8位描述的string,为QByteArray,data()表示返回QByteArray的指针,QByteArray为字节指针
  //现在已改为toLatinl函数
  Mat src = imread( img_name.toLatin1().data());
  cvtColor( src, src, CV_BGR2RGB );
  QImage img = QImage( (const unsigned char*)(src.data), src.cols, src.rows, QImage::Format_RGB888 );
  ui->label->setPixmap( QPixmap::fromImage(img) );
  img_name.clear();
}

主要代码已经非常类似windows下的编写方式,唯一不同的就是添加了QImage和mat之间的转换。

二、第二个例子
    图像处理必须和摄像头打交道,具体的配置请看下一节。但是现在,如果直接使用USB摄像头,也应该能够进行操作:
头文件:
#);
    ~MainWindow();
private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void readFarme();       // 读取当前帧信息
    void on_pushButton_4_clicked();
private:
    Ui::MainWindow *ui;
    QTimer    *timer;
    QImage    *imag;
    VideoCapture *videocapture;   // 视频获取结构, 用来作为视频获取函数的一个参数
    Mat          matFrame;        //申请IplImage类型指针,就是申请内存空间来存放每一帧图像
    bool      bMethod;//是否使用算法
};
#endif // MAINWINDOW_H
 

程序文件,注意我做了进一步集成:

#);
    );
}
,);
    }
    )
    {
        cvtColor( src, tmp, CV_BGR2RGB );
        img = QImage( (const unsigned char*)(tmp.data), tmp.cols, tmp.rows, QImage::Format_RGB888 );
    }
    else
    {
        img = QImage( (const unsigned char*)(src.data), src.cols, src.rows, QImage::Format_Grayscale8 );
    }
    QPixmap qimg = QPixmap::fromImage(img) ;
    return qimg;
}
 

最新文章

  1. java格式化时间格式
  2. web语义化与h5新增标签
  3. HDU 5092
  4. 日志分析(二) logstash patterns
  5. IIS 发布 之 Word导出本地测试正常,发布报错
  6. C++: 单例模式和缺陷
  7. 从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解--备
  8. centos7 安装kubernetes1.4
  9. Android View架构总结
  10. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入
  11. 0423上课练习(list、while、def)
  12. iis 和 node express 共用80端口 iisnode 全过程
  13. apache https配置【转】
  14. Java面试题复习笔记(框架)
  15. Windows 7 改造
  16. 闭包&amp;装饰器
  17. Spark项目之电商用户行为分析大数据平台之(五)实时数据采集
  18. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
  19. DotNetBar如何控制窗体样式
  20. spring下的多线程

热门文章

  1. ABP 框架启程
  2. Myeclipse Reload
  3. /etc/services保存了服务、端口、协议
  4. 在IntelliJ IDEA里创建简单的基于Maven的SpringMVC项目
  5. 小白的Python之路 day4 装饰器高潮
  6. Tableau Desktop 10.4.2 的安装和激活
  7. Xamarin android SwipeRefreshLayout入门实例
  8. headfirst设计模式(4)—工厂模式
  9. CPP--正码,反码,补码~附整数溢出的探讨
  10. Less is exponentially more