這篇博客就是在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();
}