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