zoukankan      html  css  js  c++  java
  • 基于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();
    
    
    }

  • 相关阅读:
    三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
    迭代器、生成器、面向过程编程
    wxpython 开发sheet
    演示生命周期和重定向
    wxpython 给框架增加菜单栏,工具栏和状态栏
    wxpython 开发俄罗斯方块
    关于重构代码的一些想法
    python 基于GUI 获取鼠标位置
    转载一篇文章 python程序在安卓手机上使用
    wxpython开发一个小游戏(一)
  • 原文地址:https://www.cnblogs.com/jsxyhelu/p/7839062.html
Copyright © 2011-2022 走看看