opencv 处理视频并使用Qt窗口作为输出
2016-06-15 20:59
1776 查看
版本: QT 5.6.0 & opencv :3.0.0 windows
曾想到的方法:
使用QT的视频播放类,QMediaplayer,QVideoWidget 并利用Qt的类提取出每一帧然后用opencv加以处理。尚未找到qt用来提取帧的函数。 代替方法:用QAbstractVideoFilter进行视频处理,但不了解该类非qml的使用方法。(弃用)
用QPaint 画出video的每一帧,或者直接用label的setPixmp函数。
方法二在实现过程中遇到的问题记录:
1. 对Mat到QImage 格式转换的过程,涉及到qimage mat对图像不同存储方式的转换。
2.capture >> frame 与 painter.drawImage() (或者label->setPixmap(QPixmap::fromImage(image))的同步问题,加一个QTimer类来控制。 其中用scale来调整image大小 嵌入label内。
曾想到的方法:
使用QT的视频播放类,QMediaplayer,QVideoWidget 并利用Qt的类提取出每一帧然后用opencv加以处理。尚未找到qt用来提取帧的函数。 代替方法:用QAbstractVideoFilter进行视频处理,但不了解该类非qml的使用方法。(弃用)
用QPaint 画出video的每一帧,或者直接用label的setPixmp函数。
方法二在实现过程中遇到的问题记录:
1. 对Mat到QImage 格式转换的过程,涉及到qimage mat对图像不同存储方式的转换。
if(img.channels() == 3) { cv::cvtColor(img,img,CV_BGR2RGB); curImage = QImage((unsigned char *)img.data,img.cols,img.rows,img.step,QImage::Format_RGB888); } else { curImage = QImage((const unsigned char*)img.data,img.cols,img.rows,img.step, QImage::Format_RGB888); }
2.capture >> frame 与 painter.drawImage() (或者label->setPixmap(QPixmap::fromImage(image))的同步问题,加一个QTimer类来控制。 其中用scale来调整image大小 嵌入label内。
timer = new QTimer ;
connect(timer,SIGNAL(timeout()),this,SLOT(changeFrame()));
void MainWindow::changeFrame()
{
capture >> img;
cv::putText(img,"putStasar",cv::Point(200,200),5,4,cv::Scalar(255,0,0));
if(img.channels() == 3) { cv::cvtColor(img,img,CV_BGR2RGB); curImage = QImage((unsigned char *)img.data,img.cols,img.rows,img.step,QImage::Format_RGB888); } else { curImage = QImage((const unsigned char*)img.data,img.cols,img.rows,img.step, QImage::Format_RGB888); }
QImage newImage = curImage.scaled(label->width(),label->height());
label->setPixmap(QPixmap::fromImage(newImage));
}
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- visual studio 2012安装配置方法图文教程 附opencv配置教程
- OpenCV 2.4.3 C++ 平滑处理分析
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python+Opencv识别两张相似图片
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程