基於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();
 
}
相關文章
相關標籤/搜索