基於PI+QT實現OpenCV圖像處理操作(基本環境搭建)


這篇博客就是在PI上直接寫出來的!cheers!!

PI3的性能已經非常強勁,而作為一個能夠獨立運行的運算單元,使用它來做圖像處理,將是非常適合的。為了挖掘機器的最大潛能,我沒有采用比較常見的python等方法,而是直接使用c++實現相關算法,同時使用QT實現GUI操作。這篇文章就是最基本的環境搭建。

一、QT的配置:

1:更新軟件源

$ sudo apt-get update

2:替換舊的軟件包

$ sudo apt-getupgrade

3:執行樹莓派固件升級:

3.1、樹莓派固件:可以理解為樹莓派的BIOS,引導程序之類的,這一部分博通不開源,給樹莓派增加新功能主要通過固件來實現。

3.2、Raspbian系統內核:也就是Linux內核,這部分是完全開源的,用戶可以自己下載源代碼進行編譯,或者通過rpi-update和固件一起升級

$ sudo rpi-update

升級完成之后,重啟樹莓派

4安裝qt5-default和 qtcreator

安裝qt5-default

$ sudo apt-get install qt5-default

安裝qtcreator

$ sudo apt-get install qtcreator

二、OpenCV的配置:

首次使用,直接使用了LibCV,為編譯好的OpenCV類庫

sudo apt-get install libcv-dev

sudo apt-get install libopencv-dev

安裝完成之后,opencv相關的頭文件被安裝到/usr/include目錄中,該目錄是linux默認頭文件查找路徑。

opencv的相關動態鏈接庫被安裝到/usr/gnueabihf/lib目錄中。

三、最為關鍵的配置文件(實際上只是寫法不一樣,內容也是很好理解的)

 
 
 
         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();
 
        
}

 
 
 
         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM