【转载】OpenCV 摄像头控制
参考:[OpenCV] -- 简单摄像头操作 - 代码人生 - 博客频道 - CSDN.NET
http://blog.csdn.net/qiurisuixiang/article/details/8670882
1、打开Qt Creator,新建一个Qt Gui工程
2、打开ui文件,设计成下图(注意:图像显示是一个QLabel,用于显示摄像头拍到的照片,将其拖大点,不然太小拍到的照片显示部分过小)
3、大致思路是:点击打开摄像头按钮,则开启摄像头,并设置一个定时器,每隔一段时间捕获摄像头摄取到的帧,将其转换成QImage,最最后在QLabel控件上显示
PS:实现过程中用到两个重要的函cvCreateCameraCapture(开启摄像头)和cvReleaseCapture(关闭摄像头)
【代码】
// opencamera.h
#ifndef OPENCAMERA_H
#define OPENCAMERA_H #include <QDialog>
#include <QTimer>
#include <QImage> #include "cv.h"
#include "highgui.h" namespace Ui {
class OpenCamera;
} class OpenCamera : public QDialog
{
Q_OBJECT public:
explicit OpenCamera(QWidget *parent = );
~OpenCamera(); private slots:
void sltBtnOpenCamera(); //打开摄像头
void sltBtnCloseCamera(); //关闭摄像头
void sltTimeOut(); //定时器时间到达 读取摄像头详细 private:
Ui::OpenCamera *ui; //定时器对象 没隔一段时间读取摄像头详细
QTimer *m_timer;
CvCapture *m_camera; //视频获取结构 作为视频获取函数的返回值
IplImage *m_imgFrame; //IplImage结构指针 存放每一帧的图像
}; #endif // OPENCAMERA_H
// opencamera.cpp
#include "opencamera.h"
#include "ui_opencamera.h" OpenCamera::OpenCamera(QWidget *parent) :
QDialog(parent),
ui(new Ui::OpenCamera)
{
ui->setupUi(this); //初始化成员变量
m_timer = new QTimer(this);
m_camera = NULL;
m_imgFrame = NULL; //连接信号和槽
connect(ui->m_btnOpenCamera, SIGNAL(clicked()), this, SLOT(sltBtnOpenCamera()));
connect(ui->m_btnCloseCamera, SIGNAL(clicked()), this, SLOT(sltBtnCloseCamera()));
connect(m_timer, SIGNAL(timeout()), this, SLOT(sltTimeOut()));
} OpenCamera::~OpenCamera()
{
delete ui;
} void OpenCamera::sltBtnOpenCamera()
{
//打开摄像头 从摄像头中获取视频
m_camera = cvCreateCameraCapture();
//开启定时器 没隔0.5秒刷新一次
m_timer->start();
} void OpenCamera::sltTimeOut()
{
//读取摄像头信息 将读取回来的帧转换成QImage类型 并在主界面的QLabel中显示 //从摄像头中抓取并返回每一帧
m_imgFrame = cvQueryFrame(m_camera);
//将抓取到的帧转换成QImage格式
QImage showImage((const uchar*)m_imgFrame->imageData, m_imgFrame->width, m_imgFrame->height, QImage::Format_RGB888);
//将图片显示到QLabel上
ui->m_lbPhoto->setPixmap(QPixmap::fromImage(showImage));
}
void OpenCamera::sltBtnCloseCamera()
{
//释放摄像头内存
cvReleaseCapture(&m_camera);
//停止定时器
m_timer->stop(); } //main.cpp
#include "opencamera.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
OpenCamera w;
w.show(); return a.exec();
}
【转载】OpenCV 摄像头控制的更多相关文章
- VB6之摄像头控制
参考文献:http://www.cnblogs.com/xidongs/archive////.html 直接上代码: 'code by lichmama from cnblogs.com '@vb6 ...
- unity中camera摄像头控制详解
目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品 ...
- python+opencv+pyqt5控制摄像头在Qlabel上显示
import cv2 import numpy as numpy from PIL import * import sys from PyQt5.QtWidgets import * from PyQ ...
- OpenCV系列--摄像头控制的简单代码
操作系统:windows xp 开发工具:VS2008 opencv版本:2.1.0 依赖库:OpenCV2.1\lib\highgui.lib #include "cv.h" # ...
- 转载OPENCV学习随笔
转载自 亦轩Dhc http://www.cnblogs.com/daihengchen/p/5492729.html 学习笔记:使用opencv做双目测距(相机标定+立体匹配+测距). 最近在做 ...
- opencv:摄像头和视频的读取
示例代码: #include <opencv.hpp> using namespace cv; int main() { VideoCapture Capture(); //打开默认摄像头 ...
- Opencv摄像头实时人脸识别
Introduction 网上存在很多人脸识别的文章,这篇文章是我的一个作业,重在通过摄像头实时采集人脸信息,进行人脸检测和人脸识别,并将识别结果显示在左上角. 利用 OpenCV 实现一个实时的人脸 ...
- OpenCV摄像头人脸识别
注: 从外设摄像装置中获取图像帧,把每帧的图片与人脸特征进行匹配,用方框框住识别出来的人脸 需要用到的函数: CvHaarClassifierCascade* cvLoadHaarClassifier ...
- Opencv 摄像头矫正
摄像机有6个外参数(3个旋转,3个平移),5个内参数(fx,fy,cx,cy,θ),摄像机的内参数在不同的视场,分辨率中是一样的,但是不同的视角下6个外参数是变化的,一个平面物体可以固定8个参数,(为 ...
随机推荐
- 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
日志log4cxx 封装.实例讲解.配置文件log4cxx.properties 1. 日志作用 程序运行过程中,需要记录程序中的运行状况,方便排查问题,记录数据.可以根据日志的记录快速定位错误发生的 ...
- Xcode打包上传遇到的坑
1.安装测试包的时候提示APIInternalError ①是否增加了测试设备的UUID ②是否使用adhoc证书打包 2.打包错误:error: couldn't remove '/Users/xx ...
- datagrid复制
private void Dgv_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)1) // Ctrl-A ...
- 20190102xlVBA_多表按姓名同时拆分
Sub 多表按姓名同时拆分20190102() AppSettings Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA ...
- WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h:373
------------[ cut here ]------------WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h: ...
- PHP工厂模式计算面积与周长
<?phpinterface InterfaceShape{ function getArea(); function getCircumference();} /** * 矩形 */class ...
- Sticks HDU - 1455 (未完成)
George took sticks of the same length and cut them randomly until all parts became at most 50 units ...
- chrome 自动加载flash
class Login(unittest.TestCase): #初始 def setUp(self): chromeOpitons = Options() prefs = { # "pro ...
- https请求排错过程
1. 看请求有没有到nginx 此时需要查看nginx的日志.一般每一个项目都会配置一个nginx站点,而一个站点都会又一个nginx配置文件,这个文件位于哪里呢?不出意外应该在:下面,如果找不到的话 ...
- Educational Codeforces Round 48 (Rated for Div. 2)G. Appropriate Team
题意:求满足条件的(i,j)对数:\(gcd(v,a_i)=x,lcm(v,a_j)=y\) 题解:\(x|a_i,a_j|y\),\(x|y\),考虑质因子p,假设a_i中p次数为a,x中次数为b, ...