QT下调用摄像头(opencv2.4.4)
http://www.cnblogs.com/yuliyang/p/3525107.html
项目pro文件:
#-------------------------------------------------
#
# Project created by QtCreator 2014-01-18T14:39:58
#
#------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = opencv_vedio
TEMPLATE = app
INCLUDEPATH +=D:\program\opencv\build\include\
INCLUDEPATH +D:\program\opencv\build\include\opencv\
INCLUDEPATH +=D:\program\opencv\build\include\opencv2\ CONFIG(debug,debug|release) {
LIBS += -LD:\program\opencv\build\x86\vc10\lib \
-lopencv_core244d \
-lopencv_highgui244d \
-lopencv_imgproc244d \
-lopencv_features2d244d \
-lopencv_calib3d244d
} else {
LIBS += -LD:\program\opencv\build\x86\vc10\lib \
-lopencv_core244 \
-lopencv_highgui244 \
-lopencv_imgproc244 \
-lopencv_features2d244 \
-lopencv_calib3d244
} SOURCES += main.cpp\
dialog.cpp HEADERS += dialog.h FORMS += dialog.ui
dialog.h:
#ifndef DIALOG_H
#define DIALOG_H #include <QDialog>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <QTimer>
#include <QPixmap>
namespace Ui {
class Dialog;
} class Dialog : public QDialog
{
Q_OBJECT public:
explicit Dialog(QWidget *parent = 0);
~Dialog(); private:
Ui::Dialog *ui;
CvCapture *capture; //highgui 里提供的一个专门处理摄像头图像的结构体
IplImage *frame; //摄像头每次抓取的图像为一帧,使用该指针指向一帧图像的内存空间
QTimer *timer; //定时器用于定时取帧,上面说的隔一段时间就去取就是用这个实现。
private slots:
void getFrame(); //实现定时从摄像头取图并显示在label上的功能。 }; #endif // DIALOG_H
dialog.cpp:
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
timer = new QTimer(this);
capture = cvCaptureFromCAM(0); //cvCaptureFromCAM其实是一个宏,就是cvCreateCameraCapture的别名,0代表第一个摄像头。-1代表默认摄像头。
if(capture==NULL){
qDebug()<<"error!";
}
timer->start(50); //1000为1秒,50毫秒去取一帧
connect(timer,SIGNAL(timeout()),this,SLOT(getFrame())); //超时就去取
} Dialog::~Dialog()
{
timer->stop(); //停止取帧
cvReleaseCapture(&capture); //释放资源是个好习惯
delete ui;
}
void Dialog::getFrame(){
frame = cvQueryFrame(capture); //从摄像头取帧
QImage image = QImage((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888).rgbSwapped(); //简单地转换一下为Image对象,rgbSwapped是为了显示效果色彩好一些。
ui->label->setPixmap(QPixmap::fromImage(image));
}
效果:
QT下调用摄像头(opencv2.4.4)的更多相关文章
- python使用opencv在Windows下调用摄像头
环境准备 1.我这里使用的是python3.7.4,python官网下载较慢的同学可以移步至 https://pan.baidu.com/s/1XiPafBjM__zfBvvsLyK7kQ 提取码:z ...
- 使用qt+ros调用摄像头遇到的问题
当使用摄像头遇到如下问题:[usb_cam-1] process has died [pid 12288, exit code 127, cmd /opt/ros/indigo/lib/usb_cam ...
- qt下调用win32api 修改分辨率
在头文件中添加 #include <window.h> DEVMODE DevMode; EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, ...
- Qt调用摄像头(截取并保存图片)
原地址:http://blog.csdn.net/liang19890820/article/details/12782531 Qt如何调用系统摄像设备进行显示.截图.录制? QCamera: ...
- java javacv调用摄像头并拍照
调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...
- Android入门(十六)调用摄像头相册
原文链接:http://www.orlion.ga/665/ 一.调用摄像头 创建一个项目ChoosePicDemo,修改activity_main.xml: <LinearLayout xml ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
- Android开发中如何调用摄像头的功能
我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 & ...
- QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)
原文地址:关于QT下资源使用和资源占用内存过多的问题作者:技术成就梦想 最近研究了一下如何从外部动态调用图片的问题,从而研究了图片资源的使用方法.网上最常见的帖子是这个,感觉总结的还不错. h ...
随机推荐
- JDBC 常用词汇以及初步思想
####JDBC程序访问数据库步骤
- wf(三)
前言: 到现在我们可以看到,WF4包含一个.xmal 文件的设计器和一个调用活动的runtime.当你创建自己的工作流的时候,你是同时也创建了一个活动, 因为活动是一个继承System.Activit ...
- Cable TV Network-POJ1966图的连通度
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4404 Accepted: 2047 Desc ...
- Duilib实现QQ聊天窗口晃动
转载:http://blog.csdn.net/arbboter/article/details/26282717 转载:http://blog.csdn.net/zerolusta/article/ ...
- GATT两个角色 服务器与客户端
两个设备应用数据的通信是通过协议栈的GATT层实现的. 从GATT角度来看,当两个设备建立连接后,他们处于以下两种角色之一: GATT服务器: 它是为GATT客户端提供数据服务的设备 GATT客户端: ...
- javascript 函数声明和函数表达式的区别(学习笔记)
javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函 ...
- composer安装fxp插件时候提示内存不足且没有交换空间的解决办法
The following exception is caused by a lack of memory and not having swap Check https://getcomposer. ...
- Python生成字体
Python version 2.7 required, which was not found in the registry 参考:http://www.cnblogs.com/min0208 ...
- java高薪之路__010_设计模式
设计模式只是一个在构建大型工程时,为了方便更改,添加,查询和管理的一种代码工具,没有必要单独为了设计模式而使用设计模式,使简单的事情复杂化. 总体来说设计模式分为三大类: 1. 创建型模式,共五种 - ...
- .net添加下拉框
aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DropDownL ...