Qt调用USB摄像头,如何在播放的时候往视频内画框

sinat_20258253 2016-07-15 11:14:43
如题,框的位置是实时变化的
...全文
754 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主是怎样通过QT获取USB数据 并进行处理的啊
sinat_20258253 2016-07-18
  • 打赏
  • 举报
回复
引用 5 楼 u010111033 的回复:
我的建议是你首先需要继承原来的paintEvent的写法,就如java中super.xxx()先执行父类功能,在这个基础上再写自己的补充。 QT中的GUI部件才能写paintEvent(QEvent* e),并且必须继承于QWidget;但是好似你的类是自己的类,并无继承Qt原类的情况,自然不能使用paintEvent(); 如果你继承了Qt的部件类,要写的话在paintEvent(QEvent* e)里面首行要写类似:QWIdget::paintEvent(e);
引用 5 楼 u010111033 的回复:
我的建议是你首先需要继承原来的paintEvent的写法,就如java中super.xxx()先执行父类功能,在这个基础上再写自己的补充。 QT中的GUI部件才能写paintEvent(QEvent* e),并且必须继承于QWidget;但是好似你的类是自己的类,并无继承Qt原类的情况,自然不能使用paintEvent(); 如果你继承了Qt的部件类,要写的话在paintEvent(QEvent* e)里面首行要写类似:QWIdget::paintEvent(e);
引用 5 楼 u010111033 的回复:
我的建议是你首先需要继承原来的paintEvent的写法,就如java中super.xxx()先执行父类功能,在这个基础上再写自己的补充。 QT中的GUI部件才能写paintEvent(QEvent* e),并且必须继承于QWidget;但是好似你的类是自己的类,并无继承Qt原类的情况,自然不能使用paintEvent(); 如果你继承了Qt的部件类,要写的话在paintEvent(QEvent* e)里面首行要写类似:QWIdget::paintEvent(e);
好的,问题已解决,感谢!
Little柯南 2016-07-15
  • 打赏
  • 举报
回复
我的建议是你首先需要继承原来的paintEvent的写法,就如java中super.xxx()先执行父类功能,在这个基础上再写自己的补充。 QT中的GUI部件才能写paintEvent(QEvent* e),并且必须继承于QWidget;但是好似你的类是自己的类,并无继承Qt原类的情况,自然不能使用paintEvent(); 如果你继承了Qt的部件类,要写的话在paintEvent(QEvent* e)里面首行要写类似:QWIdget::paintEvent(e);
sinat_20258253 2016-07-15
  • 打赏
  • 举报
回复
引用 3 楼 sinat_20258253 的回复:
[quote=引用 1 楼 u010111033 的回复:] 你说的意思是类似识别吧?比如发现人头像,然后圈个圈什么的? 如果是这样,那需要open cv识别,识别到了发出信号,然后Qt在指定范围显示圈
对的,发现人脸头像的!我试了下继承QCameraViewfinder,在paintevent内写了画一条线,但这样usb摄像头播放视频有问题啊,求解,附上代码: .h #ifndef MY_VIEWFINDER_H #define MY_VIEWFINDER_H #include <QCameraViewfinder> class my_viewfinder:public QCameraViewfinder { public: my_viewfinder(); int x1; int y1; int x2; int y2; protected: void paintEvent(QPaintEvent *); }; #endif // MY_VIEWFINDER_H .cpp #include "my_viewfinder.h" #include <QPainter> #include <QCameraViewfinder> my_viewfinder::my_viewfinder() { } void my_viewfinder::paintEvent(QPaintEvent *) { QPainter p(this); p.setPen(Qt::NoPen); p.setBrush(QColor(255,0,0)); p.drawRoundedRect(QRect(0,0,this->width(),3),0.1f,0.1f); } [/quote]
引用 3 楼 sinat_20258253 的回复:
[quote=引用 1 楼 u010111033 的回复:] 你说的意思是类似识别吧?比如发现人头像,然后圈个圈什么的? 如果是这样,那需要open cv识别,识别到了发出信号,然后Qt在指定范围显示圈
对的,发现人脸头像的!我试了下继承QCameraViewfinder,在paintevent内写了画一条线,但这样usb摄像头播放视频有问题啊,求解,附上代码: .h #ifndef MY_VIEWFINDER_H #define MY_VIEWFINDER_H #include <QCameraViewfinder> class my_viewfinder:public QCameraViewfinder { public: my_viewfinder(); int x1; int y1; int x2; int y2; protected: void paintEvent(QPaintEvent *); }; #endif // MY_VIEWFINDER_H .cpp #include "my_viewfinder.h" #include <QPainter> #include <QCameraViewfinder> my_viewfinder::my_viewfinder() { } void my_viewfinder::paintEvent(QPaintEvent *) { QPainter p(this); p.setPen(Qt::NoPen); p.setBrush(QColor(255,0,0)); p.drawRoundedRect(QRect(0,0,this->width(),3),0.1f,0.1f); } [/quote] 把paintEvent函数注释掉播放视频就正常了,这到底是为什么?是因为我重写paintevent方法错了么
sinat_20258253 2016-07-15
  • 打赏
  • 举报
回复
引用 1 楼 u010111033 的回复:
你说的意思是类似识别吧?比如发现人头像,然后圈个圈什么的? 如果是这样,那需要open cv识别,识别到了发出信号,然后Qt在指定范围显示圈
对的,发现人脸头像的!我试了下继承QCameraViewfinder,在paintevent内写了画一条线,但这样usb摄像头播放视频有问题啊,求解,附上代码: .h #ifndef MY_VIEWFINDER_H #define MY_VIEWFINDER_H #include <QCameraViewfinder> class my_viewfinder:public QCameraViewfinder { public: my_viewfinder(); int x1; int y1; int x2; int y2; protected: void paintEvent(QPaintEvent *); }; #endif // MY_VIEWFINDER_H .cpp #include "my_viewfinder.h" #include <QPainter> #include <QCameraViewfinder> my_viewfinder::my_viewfinder() { } void my_viewfinder::paintEvent(QPaintEvent *) { QPainter p(this); p.setPen(Qt::NoPen); p.setBrush(QColor(255,0,0)); p.drawRoundedRect(QRect(0,0,this->width(),3),0.1f,0.1f); }
Little柯南 2016-07-15
  • 打赏
  • 举报
回复
对于Qt的实时显示,你需要重写printEvent()函数
Little柯南 2016-07-15
  • 打赏
  • 举报
回复
你说的意思是类似识别吧?比如发现人头像,然后圈个圈什么的? 如果是这样,那需要open cv识别,识别到了发出信号,然后Qt在指定范围显示圈

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧