目录

  • 一、学习的知识点
    • 1.QT事件循环机制
      • 1.1QT是事件驱动的。QT将系统产生的信号(软件中断)转换成QT事件,并且将事件封装成类,所有的事件类都是QEvent派生的,事件的产生和处理就是QT程序的主轴,伴随着整个程序的运行周期。
      • 1.2QT事件由QObject接收,QObject是所有QT类的基类,是QT对象模型的核心。QObject类的三大核心功能之一就是 事件处理。QObject通过event函数调用获取事件,通过继承QObject并重定义event函数实现自定义事件的处理
      • 1.3QT事件处理的流程:事件有别于信号的重要一点,事件是一个类对象具有特定的类型,事件多数情况被分发到一个队列(事件队列)中,队列有时间就不停的将队列中断时间发送给QObject对象,队列为空时就阻塞地等待事件。
      • 1.4调用show函数只是发生了一个事件,这个事件放在队列中,要等程序空闲才能真正显示,或者使用qApp->processevents(),可以立即处理队列中的事件。
    • 2.Opencv图像处理
      • 2.1Mat格式的图片转为灰度图: Mat img,img_new; cvtColor(img,img_new,CV_BGR2GRAY);
      • 2.2灰度图转二值图:threshold(img,img_new,70.0,150.0,THRESH_BINARY); THRESH_BINARY是选择转化的算法,灰度大于参数三时,取值参数四,否则取值0,实现二值化
      • 2.3二值图的腐蚀,扩大黑色部分,使轮廓更平滑,Mat img_erode; Mat elem=getStructuringElement(MORPH_RECT,Size(10,10),Point(-1,-1)); //设置腐蚀参数erode(img_th,img_erode,elem); //腐蚀
      • 2.4 降噪:medianBlur(img_erode,img_erode,3); //第三参数需要为 奇数
      • 2.5 膨胀,扩大白色部分,Mat img_dilate;Mat dilate2=getStructuringElement(MORPH_RECT,Size(5,5));dilate(img_erode,img_dilate,dilate2);
      • 2.6画轮廓
  • 二、上课没有听懂或者没有理解的地方
  • 三、当天学习的收获

一、学习的知识点

1.QT事件循环机制

1.1QT是事件驱动的。QT将系统产生的信号(软件中断)转换成QT事件,并且将事件封装成类,所有的事件类都是QEvent派生的,事件的产生和处理就是QT程序的主轴,伴随着整个程序的运行周期。

1.2QT事件由QObject接收,QObject是所有QT类的基类,是QT对象模型的核心。QObject类的三大核心功能之一就是 事件处理。QObject通过event函数调用获取事件,通过继承QObject并重定义event函数实现自定义事件的处理

1.3QT事件处理的流程:事件有别于信号的重要一点,事件是一个类对象具有特定的类型,事件多数情况被分发到一个队列(事件队列)中,队列有时间就不停的将队列中断时间发送给QObject对象,队列为空时就阻塞地等待事件。

1.4调用show函数只是发生了一个事件,这个事件放在队列中,要等程序空闲才能真正显示,或者使用qApp->processevents(),可以立即处理队列中的事件。

2.Opencv图像处理

2.1Mat格式的图片转为灰度图: Mat img,img_new; cvtColor(img,img_new,CV_BGR2GRAY);

2.2灰度图转二值图:threshold(img,img_new,70.0,150.0,THRESH_BINARY); THRESH_BINARY是选择转化的算法,灰度大于参数三时,取值参数四,否则取值0,实现二值化

2.3二值图的腐蚀,扩大黑色部分,使轮廓更平滑,Mat img_erode; Mat elem=getStructuringElement(MORPH_RECT,Size(10,10),Point(-1,-1)); //设置腐蚀参数erode(img_th,img_erode,elem); //腐蚀

2.4 降噪:medianBlur(img_erode,img_erode,3); //第三参数需要为 奇数

2.5 膨胀,扩大白色部分,Mat img_dilate;Mat dilate2=getStructuringElement(MORPH_RECT,Size(5,5));dilate(img_erode,img_dilate,dilate2);

2.6画轮廓

vector< vector<Point> > contours; //存放轮廓数据 原始数据 存在噪点一个轮廓要用到一个vector//CV_RETR_EXTERNAL 检测外围轮廓CV_CHAIN_APPROX_SIMPLE 把轮廓拐点的左边存起来
findContours(img_dilate,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,Point(0,0));
cout<<"contours"<<contours.size()<<endl;vector< vector<Point> > contours_new(contours.size()); //存放处理后的轮廓数据
vector<Rect> boundRect(contours.size());
int j=contours.size();
int x=0,y=0,w=0,h=0;
for (int i=0;i<j;i++)
{//opencv的函数 对指定的点集进行多边形逼近的函数//参数一 输入的点集 参数二 输出的点集 参数三 精度 在范围内则保留 范围外则丢弃 参数四 曲线闭合 或断开approxPolyDP(Mat(contours[i]),contours_new[i],3,true); ////取出每一个 点 缝合起来boundRect[i]=boundingRect( Mat(contours_new[i]) ); //用此函数可以得到包裹轮廓的最小矩形x=boundRect[i].x;y=boundRect[i].y;w=boundRect[i].width;h=boundRect[i].height;cout<<"x"<<x<<"y"<<y<<"w"<<w<<"h"<<h<<endl;rectangle(result,Point(x,y),Point(x+w,y+h),Scalar(0,255,0),2,8,0); //在图片result上绘制边框}imshow("rec:",result);

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

学习了qt的事件循环机制,理解了为什么循环show图片却不会实时显示。

210322阶段三QT事件循环及opencv图像处理相关推荐

  1. 乱谈Qt事件循环嵌套

    本文旨在说明:QDialog::exec().QMenu::exec()等开启的局部事件循环,易用的背后,还有很多的陷阱... 引子 Qt 是事件驱动的,基本上,每一个Qt程序我们都会通过QCoreA ...

  2. 【Libevent】Libevent学习笔记(三):事件循环

    00. 目录 文章目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. eve ...

  3. 【传智播客】Libevent学习笔记(三):事件循环

    目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. event_base_l ...

  4. Qt事件循环的一些理解

    1.事件循环一般用exec()函数开启.QApplicaion::exec().QMessageBox::exec()都是事件循环.其中前者又被称为主事件循环. 事件循环首先是一个无限"循环 ...

  5. 201110阶段二qt事件

    目录 一.学习的知识点 事件 鼠标事件 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 一.学习的知识点 双链表分别存放用户名和密码.优势:分开存放,安全性好.劣势:删除时容易崩溃. 出现未定 ...

  6. Qt 之 Eventloop 事件循环

    文章目录 需求 QEventLoop Demo1- 登录 Demo2- 延时 Demo3- 在程序中等待服务器返回 理解QT事件循环 事件循环抽象 Qt是事件驱动的 Qt常见事件 Qt事件从哪里来 Q ...

  7. 八七、Node.js事件循环与多进程

    nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要 fs, net,http,events 事件循环是企业面试中的最高频考题之一 能驾驭nodejs多进程是一名资深前端 ...

  8. 详解浏览器和Node的事件循环机制及区别

    关于事件循环机制(详解) 前言 一.浏览器的事件循环机制 二.Node的事件循环机制 三.两者的区别 前言 JS是单线程的脚本语言,即在同一时间只能做一件事.为了协调时间.用户交互.脚本.UI渲染和网 ...

  9. 【转】QT事件传递与事件过滤器

         [概览] 1.重载特定事件函数.    比如: mousePressEvent(),keyPressEvent(),  paintEvent() .      2.重新实现QObject:: ...

最新文章

  1. 关于笔记本键盘错乱的原因及解决办法
  2. Algorithms_入门基础_时间复杂度空间复杂度
  3. 大学阶段总结——大三
  4. Fiori elements执行过程解析:When click go in table list, odata service is sent
  5. 定制安装centos6.4系统 上汽集团线上环境
  6. 3.7亿条保单数据怎么分析?这个大数据平台有绝招
  7. Servlet 与 CGI 的比较
  8. 可视化动画:数据结构和算法
  9. Qt之高DPI显示器(二) - 自适配解决方案分析
  10. java if ( 常量==变量)_Java常量、变量和运算符
  11. session的概念特点及原理
  12. 图片怎样把背景去掉?怎么把图片背景透明?
  13. 北航2022软件工程第一次作业——阅读、思考、调研、实践
  14. Unity3D 场景中图片模糊问题
  15. mysql数据库所有表合并_mysql数据库如何将表合并我从数据库中倒出表导出后是这样的b 爱问知识人...
  16. java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因
  17. javaSE 笔记全!
  18. java jcmd,JVM工具_jcmd
  19. ios swift是静态语言吗
  20. Spring——IoC和DI

热门文章

  1. zsh 隐藏用户名和主机
  2. 阿里云安全送您六道平安符,恭贺新春!
  3. SAPGUI系统登录页面配置的SAProuter有什么用 1
  4. HTML5与HTML4的区别(译文)
  5. 第18章 Linux集群架构
  6. python 笔记 之 函数中默认参数的影响
  7. Linux Shell 快捷键
  8. java 23种设计模式及具体例子 收藏有时间慢慢看
  9. Hibernate随机获取指定范围内的指定条目的记录
  10. Mocha BSM产品亮点——事件管理