210322阶段三QT事件循环及opencv图像处理
目录
- 一、学习的知识点
- 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图像处理相关推荐
- 乱谈Qt事件循环嵌套
本文旨在说明:QDialog::exec().QMenu::exec()等开启的局部事件循环,易用的背后,还有很多的陷阱... 引子 Qt 是事件驱动的,基本上,每一个Qt程序我们都会通过QCoreA ...
- 【Libevent】Libevent学习笔记(三):事件循环
00. 目录 文章目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. eve ...
- 【传智播客】Libevent学习笔记(三):事件循环
目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. event_base_l ...
- Qt事件循环的一些理解
1.事件循环一般用exec()函数开启.QApplicaion::exec().QMessageBox::exec()都是事件循环.其中前者又被称为主事件循环. 事件循环首先是一个无限"循环 ...
- 201110阶段二qt事件
目录 一.学习的知识点 事件 鼠标事件 二.上课没有听懂或者没有理解的地方 三.当天学习的收获 一.学习的知识点 双链表分别存放用户名和密码.优势:分开存放,安全性好.劣势:删除时容易崩溃. 出现未定 ...
- Qt 之 Eventloop 事件循环
文章目录 需求 QEventLoop Demo1- 登录 Demo2- 延时 Demo3- 在程序中等待服务器返回 理解QT事件循环 事件循环抽象 Qt是事件驱动的 Qt常见事件 Qt事件从哪里来 Q ...
- 八七、Node.js事件循环与多进程
nodejs事件循环与多进程 why 事件循环对于深入理解nodejs异步至关重要 fs, net,http,events 事件循环是企业面试中的最高频考题之一 能驾驭nodejs多进程是一名资深前端 ...
- 详解浏览器和Node的事件循环机制及区别
关于事件循环机制(详解) 前言 一.浏览器的事件循环机制 二.Node的事件循环机制 三.两者的区别 前言 JS是单线程的脚本语言,即在同一时间只能做一件事.为了协调时间.用户交互.脚本.UI渲染和网 ...
- 【转】QT事件传递与事件过滤器
[概览] 1.重载特定事件函数. 比如: mousePressEvent(),keyPressEvent(), paintEvent() . 2.重新实现QObject:: ...
最新文章
- 关于笔记本键盘错乱的原因及解决办法
- Algorithms_入门基础_时间复杂度空间复杂度
- 大学阶段总结——大三
- Fiori elements执行过程解析:When click go in table list, odata service is sent
- 定制安装centos6.4系统 上汽集团线上环境
- 3.7亿条保单数据怎么分析?这个大数据平台有绝招
- Servlet 与 CGI 的比较
- 可视化动画:数据结构和算法
- Qt之高DPI显示器(二) - 自适配解决方案分析
- java if ( 常量==变量)_Java常量、变量和运算符
- session的概念特点及原理
- 图片怎样把背景去掉?怎么把图片背景透明?
- 北航2022软件工程第一次作业——阅读、思考、调研、实践
- Unity3D 场景中图片模糊问题
- mysql数据库所有表合并_mysql数据库如何将表合并我从数据库中倒出表导出后是这样的b 爱问知识人...
- java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因
- javaSE 笔记全!
- java jcmd,JVM工具_jcmd
- ios swift是静态语言吗
- Spring——IoC和DI