从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

1综述
http://www.cnblogs.com/jsxyhelu/p/7907241.html
2环境架设
http://www.cnblogs.com/jsxyhelu/p/7908226.html
3两个例子
http://www.cnblogs.com/jsxyhelu/p/8000804.html
4程序框架
http://www.cnblogs.com/jsxyhelu/p/7953805.html
5编译使用最新opencv
http://www.cnblogs.com/jsxyhelu/p/8000819.html
6综合实验
http://www.cnblogs.com/jsxyhelu/p/8000829.html
7拾遗
http://www.cnblogs.com/jsxyhelu/p/8007117.html

为了方便后期图像处理相关操作运用,将前面的程序封装成框架以复用

一、打开PI自带的摄像头

sudo raspi-config

移动到“5”选项,按下回车键,选择camera。

选择“Enable”然后回车。

再选择“Yes”,回车后树莓派会重新启动。

通过raspi-config工具更新了操作并使能摄像头之后,它会告诉树莓派摄像头已经连接成功,并增加了两个命令行工具以供用户使用摄像头。

raspistill
raspivid
如果是usb摄像c,现在已经可以直接使用。但是如果想集成度搞一些,直接使用csi的摄像头,需要这样做:
 
cd /etc/modules-load.d/
sudo vim modules.conf
添加
bcm2835-v4l2
 
需要重启。
二、编写程序,获取并显示实时视频
主要程序代码:
#): QLabel(parent){}
       ~ClickedLabel() {}
   signals:
       void clicked(ClickedLabel* click); // ????
   protected:
       void mouseReleaseEvent(QMouseEvent*); // ?????????
};
#endif // CLICKEDLABEL_H
 
#);
    ~MainWindow();

private slots:
    void on_MainWindow_iconSizeChanged(const QSize &iconSize);
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void readFarme();       // 核心函数
private:
    Ui::MainWindow *ui;
    QTimer    *timer;
    QImage    *imag;
    VideoCapture *videocapture;    
    Mat          matFrame;        
    bool      bMethod;//是否采用图像处理算法
    ClickedLabel * clickLabel;
    ClickedLabel * clickLabel2;
};

#endif // MAINWINDOW_H
 
#include "clickedlabel.h"

void ClickedLabel::mouseReleaseEvent(QMouseEvent *)
{
    emit clicked(this);
}
 
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

 
#,,,);
    connect(clickLabel,SIGNAL(clicked(ClickedLabel,,,);
    connect(clickLabel2,SIGNAL(clicked(ClickedLabel);
    timer);
}
,);
    }
    )
    {
        cvtColor( src, tmp, CV_BGR2RGB );
        img = QImage( (const unsigned char*)(tmp.data), tmp.cols, tmp.rows, QImage::Format_RGB888 );
    }
    else
    {
        img = QImage( (const unsigned char*)(src.data), src.cols, src.rows, QImage::Format_Indexed8 );
    }
    QPixmap qimg = QPixmap::fromImage(img) ;
    return qimg;
}
 
三、程序要点和结果展示
1、直接调用OpenCV的摄像头模块,实践证明在Linux上面很有效;
2、为了能够让label可以被点击,进行了一个类的重构工作;
至此,程序框架搭建完成,可以方便复用,完整代码在链接为:
 
 
 

附件列表

(4程序框架)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练的更多相关文章

  1. (7拾遗)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  2. (6综合实验)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  3. (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  4. (2环境架设)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  5. (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...

  6. (5编译使用最新opencv)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设http://www.c ...

  7. VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)

    上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...

  8. OSG-基础知识-程序框架

    本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...

  9. php图像处理(thinkphp框架有相对强大的图像处理功能)

    php图像处理(thinkphp框架有相对强大的图像处理功能) 一.总结 1.php处理图像:php处理图像需要安装外库(gd库) 2.gd库函数可以非常完美的操作图像:安装好库之后,这个库里面的函数 ...

随机推荐

  1. Android TCP/IP 扫盲教程

    TCP/IP 是因特网的通信协议. 通信协议是对计算机必须遵守的规则的描写叙述.仅仅有遵守这些规则.计算机之间才干进行通信. 浏览器和server都在使用 TCP/IP 因特网浏览器和因特网serve ...

  2. Java序列化框架性能比較

    博客: http://colobu.com jvm-serializers提供了一个非常好的比較各种Java序列化的的測试套件. 它罗列了各种序列化框架. 能够自己主动生成測试报告. 我在AWS c3 ...

  3. Vue深度学习(4)-方法与事件处理器

    方法处理器 可以用 v-on 指令监听 DOM 事件: <div id="app"> <button v-on:click = "greet" ...

  4. java多线程编程核心技术——第六章总结

    目录 1.0立即加载/"饿汉式" 2.0延迟加载/"懒汉式" 3.0使用静态内置类实现单例模式 4.0序列化与反序列化的单例模式实现 5.0使用static代码 ...

  5. 详细:idea如何设置类头注释和方法注释

    IntelliJ IDEA 类注释和自定义方法注释   来源:https://my.oschina.net/baishi/blog/617478#navbar-header intellj idea的 ...

  6. 对Java中多态,封装,继承的认识(重要)

                                                            一.Java面向对象编程有三大特性:封装,继承,多态 在了解多态之前我觉得应该先了解一下 ...

  7. SQL 杂活

    例子一:查询两个表数据并且分页展示 select * from ( select ROW_NUMBER() OVER(order by CreateTime desc) as rownum,* fro ...

  8. SQL Server 修改AlwaysOn共享网络位置

    标签:MSSQL/故障转移 概述 很多人一开始搭建Alwayson的时候对于共享网络位置的选择不是很重视, 导致后面需要去修改这个路径.但是怎样修改这个路径呢?貌似没有给出具体的修改选项,但是还是有地 ...

  9. Python学习日记:day6----小知识点总结

    小知识点总结 一.Python2与Python3 的区别 1.Python2中可以加括号输出,也可不加输出     Python3中必须加 2.python2 中有xrange(生成器)也有range ...

  10. 栈和队列数据结构的相互实现[LeetCode]

    栈是先进后出,队列是先进后出,这里讨论一下两种数据结构之间的相互实现. 一.用两个栈实现队列 我们用一个栈来实现队列的进队操作(栈A),用另一个栈来实现队列的出队操作(栈B). 1.入队列: 把元素放 ...