基于PI+QT实现OpenCV图像处理操做(基本环境搭建)

这篇博客就是在PI上直接写出来的!cheers!!python

PI3的性能已经很是强劲,而做为一个可以独立运行的运算单元,使用它来作图像处理,将是很是适合的。为了挖掘机器的最大潜能,我没有采用比较常见的python等方法,而是直接使用c++实现相关算法,同时使用QT实现GUI操做。这篇文章就是最基本的环境搭建。linux

1、QT的配置:c++

1:更新软件源算法

$ sudo apt-get update函数

2:替换旧的软件包性能

$ sudo apt-getupgradeui

3:执行树莓派固件升级:this

3.一、树莓派固件:能够理解为树莓派的BIOS,引导程序之类的,这一部分博通不开源,给树莓派增长新功能主要经过固件来实现。spa

3.二、Raspbian系统内核:也就是Linux内核,这部分是彻底开源的,用户能够本身下载源代码进行编译,或者经过rpi-update和固件一块儿升级3d

$ sudo rpi-update

升级完成以后,重启树莓派

4安装qt5-default和 qtcreator

安装qt5-default

$ sudo apt-get install qt5-default

安装qtcreator

$ sudo apt-get install qtcreator

2、OpenCV的配置:

首次使用,直接使用了LibCV,为编译好的OpenCV类库

sudo apt-get install libcv-dev

sudo apt-get install libopencv-dev

安装完成以后,opencv相关的头文件被安装到/usr/include目录中,该目录是linux默认头文件查找路径。

opencv的相关动态连接库被安装到/usr/gnueabihf/lib目录中。

3、最为关键的配置文件(实际上只是写法不同,内容也是很好理解的)

 
 
 
 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



结果有图有真相哈!

在GUI环境下,也能够进行图像处理
 
 
 
 #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();
 
}
相关文章
相关标签/搜索