[OpenCV]获取摄像头视频
环境:Windows 8 64bit + VS2012 X64 + OpenCV 2.4.7
摄像头的捕捉使用VideoCapture类
Class VideoCapture 【OpenCV文档的链接点这里】
这个类专门用来从视频文件或者摄像头中获取视频流
具体的构造和相关方法,参考上面的官方文档
示例代码如下:
1 #include "opencv2/opencv.hpp"
2
3 using namespace cv;
4
5 int main(int, char**)
6 {
7 VideoCapture cap(0); //打开默认的摄像头号
8 if(!cap.isOpened()) //检测是否打开成功
9 return -1;
10
11 Mat edges;
12 namedWindow("edges",1);
13 for(;;)
14 {
15 Mat frame;
16 cap >> frame; // 从摄像头中获取新的一帧
17 cvtColor(frame, edges, CV_BGR2GRAY);
18 GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
19 Canny(edges, edges, 0, 30, 3);
20 imshow("edges", edges);
21 if(waitKey(30) >= 0) break;
22 }
23 //摄像头会在VideoCapture的析构函数中释放
24 return 0;
25 }
Get和Set方法的参数如下
C++: bool VideoCapture::set(int propId, double value) 和 double VideoCapture::get(int propId)
参数propId如下: 来自这里
CV_CAP_PROP_POS_MSEC 视频当前点的毫秒值或视频捕捉的时间戳
CV_CAP_PROP_POS_FRAMES 下次将被捕获的0基索引的帧
CV_CAP_PROP_POS_AVI_RATIO 视频文件的相关位置: 0 - start of the film, 1 - end of the film.
CV_CAP_PROP_FRAME_WIDTH 视频流帧的宽度
CV_CAP_PROP_FRAME_HEIGHT 视频流帧的高.
CV_CAP_PROP_FPS 帧率.
CV_CAP_PROP_FOURCC 4字符编码的编码器.
CV_CAP_PROP_FRAME_COUNT 视频文件的帧数.
CV_CAP_PROP_FORMAT 由retrieve()返回矩阵对象的格式 .
CV_CAP_PROP_MODE 后端指定值指示当前捕捉的模式.
CV_CAP_PROP_BRIGHTNESS 图像亮度 (只对摄像头).
CV_CAP_PROP_CONTRAST 图像对比度 (only for cameras).
CV_CAP_PROP_SATURATION 图像饱和度 (only for cameras).
CV_CAP_PROP_HUE 色调 (only for cameras).
CV_CAP_PROP_GAIN 增益(only for cameras).
CV_CAP_PROP_EXPOSURE 曝光(only for cameras).
CV_CAP_PROP_CONVERT_RGB 布尔型标记图像是否应该被转换为RGB.
CV_CAP_PROP_WHITE_BALANCE 白平衡(目前不支持)
CV_CAP_PROP_RECTIFICATION 立体相机的矫正标记(note: only supported by DC1394 v 2.x backend currently)
在使用示例代码的时候出现了个问题,在cap>>frame这里,获取出现frame为空,但也有可以正常运行的。表示对底层的机制不了解,先拿来跑起来好了。
在stackoverflow上有人也问了这个问题,请点击这里
有人说的原因是在VideoCapture刚开始获取摄像头视频流的过程不返回信号,所以判断Mat是否为空,并不断循环去获取Mat
把waitKey当做延时函数来更新窗口中获取的图像
1 int cameraNumber = 0;
2
3 VideoCapture camera;
4 camera.open(cameraNumber);
5 if ( !camera.isOpened() ) {
6 cerr << "ERROR: Could not access the camera or video!" << endl;
7 exit(1);
8 }
9
10 int CAMERA_CHECK_ITERATIONS = 10;
11 while (true) {
12 Mat cameraFrame;
13 camera >> cameraFrame;
14 if ( !cameraFrame.empty() ) {
15 imshow("Video", cameraFrame);
16 int key = waitKey(1);
17 if ( key == 27 ) break;
18 } else {
19 cout << "::: Accessing camera :::" << endl;
20 if ( CAMERA_CHECK_ITERATIONS > 0 ) CAMERA_CHECK_ITERATIONS--;
21 else break;
22 }
23 }
[OpenCV]获取摄像头视频的更多相关文章
- Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比
打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...
- OpenCV与Socket实现树莓派获取摄像头视频至电脑
OpenCV能够为我们带来便捷的图像处理接口,但是其处理速度在一块树莓派上肯定是不尽如人意的.尤其当我们想要使用复杂的算法时,只能把算法托到服务器上才有可能.这里介绍了一种方法,实现树莓派传输Mat至 ...
- qt上用opencv显示摄像头视频
参考:http://blog.csdn.net/augusdi/article/details/8865541 代码如下: 注意,要在ui界面上放置一个“Vertical Layout”控件,调整到合 ...
- python opencv3 获取摄像头视频
git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 捕获摄像头10 ...
- opencv 获取摄像头图像
http://www.cnblogs.com/epirus/archive/2012/06/04/2535190.html #include "stdafx.h" #include ...
- Opencv+MFC获取摄像头数据,显示在Picture控件
分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...
- 基于opencv网络摄像头在ubuntu下的视频获取
基于opencv网络摄像头在ubuntu下的视频获取 1 工具 原料 平台 :UBUNTU12.04 安装库 Opencv-2.3 2 安装编译运行步骤 安装编译opencv-2.3 参 ...
- 基于opencv在摄像头ubuntu根据视频获取
基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 :UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考h ...
- OpenCV获取IP摄像头视频
从开源中国博客搬来,合并博客 实验室做一个智能小车的小项目,期间涉及到在PC端处理小车摄像头的视频.这里先用安卓手机代替一下进行试验.大致流程就是手机摄像头获取视频,开启一个IP摄像头服务软件,在局域 ...
随机推荐
- Java高并发与多线程(一)-----概念
其实之前一直想专门写一篇,单独说一说Java的多线程与高并发,但是一直以来,都没有想到能够用什么比较有趣的表现形式去表达出来,而且网上充斥着很多类似的博客,有好的又不好的,有简介的有繁琐的,所以也一直 ...
- python -c 妙用
前言 python -c 命令还是有用的哈 正文 python的 -c 可以在命令行中调用 python 代码, 实际上 -c 就是 command 的意思 官方文档中解释为(节选自: python ...
- 【LeetCode】365.水壶问题
题目描述 解题思路 思路一:裴蜀定理-数学法 由题意,每次操作只会让桶里的水总量增加x或y,或者减少x或y,即会给水的总量带来x或y的变化量,转为数字描述即为:找到一对整数a,b使得下式成立: ax+ ...
- InheritableThreadlocal使用问题排查
背景 在做一个微服务系统的时候,我们的参数一般都是接在通过方法定义来进行传递的,类似这样 public void xxx(Param p, ...){ // do something } 然后这时有个 ...
- Mybatis 一级缓存和二级缓存的使用
目录 Mybatis缓存 一级缓存 二级缓存 缓存原理 Mybatis缓存 官方文档:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#cache My ...
- 力软最新版本与.netCore版本
功能强大,直接上图: 加微信或QQ交流开发技术:25489181 netcore版本 版本优势: .NET Core是适用于 Windows.Linux 和 macOS 的免费.开源托管的计算机软件框 ...
- Kioptrix Level 2
简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...
- day128:MySQL进阶:
目录 1.介绍和安装 2.基础管理 2.1 用户管理 2.2 权限管理 2.3 连接管理 2.4 配置管理 3.MySQL的体系结构 4.SQL 5.索引和执行计划 1.介绍和安装 1.1 数据库分类 ...
- 2V升3V芯片,输入2V输出3V可达1A
PW5328B是一个恒定频率, 6引脚 SOT23电流模式升压转换器,用于小型低功耗应用. PW5328B的开关频率为 1.2MHz,允许使用微小的.低成本的电容器和电感器.内部软启动导致小涌流和延长 ...
- 全网最详细的PyCharm+Anaconda的安装。
目录 PyCharm的安装 一.下载安装包 1.安装网站 2.在导航栏输入网址回车 3.点击 DOWNLOAD. 4.它有专业版和社区版,我们下载社区版就可以使用了.(专业版要收费) 二.安装过程 5 ...