Opencv中VideoCapture是专门用来处理视频文件或者摄像头视频流的类,详细的说明和用法可以参考Opencv2.4.13的说明文档:点击打开链接

使用VideoCapture打开内置摄像头的例子:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>  using namespace cv; int main(int argc,char *argv[])
{  VideoCapture cap(0);//打开默认的摄像头if(!cap.isOpened())  {  return -1;  }  Mat frame;      bool stop = false;  while(!stop)  {         cap.read(frame); //  或cap>>frame;         imshow("Video",frame);if(waitKey(30)==27) //Esc键退出{stop = true;  }  }return 0;
}  

效果图(拍摄了一张明信片):

VideoCapture cap(0)中参数0代表默认的摄像头的ID,一般内置摄像头是系统默认的摄像头,通过Mat类型的frame获取到摄像头的输入流之后就可以对每一幅frame做一常规的图像处理工作了。

下边这个例子生成一个大小为原图像三分之一的图像,并叠加后输出:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>  using namespace cv; int main(int argc,char *argv[])
{  VideoCapture cap(0);//打开默认的摄像头if(!cap.isOpened())  {  return -1;  }  Mat frame; //接收视频输入流 Mat embedFrame;cap.read(frame); //  或cap>>frame;int hight=frame.rows;int width=frame.cols;embedFrame=Mat::ones(Size(width/3,hight/3),CV_8UC3);bool stop = false;  while(!stop)  {        cap.read(frame); //  或cap>>frame;for(int i=0;i<embedFrame.rows;i++){for(int j=0;j<embedFrame.cols;j++){embedFrame.at<Vec3b>(i,j)[0]=frame.at<Vec3b>(i*3,j*3)[0];embedFrame.at<Vec3b>(i,j)[1]=frame.at<Vec3b>(i*3,j*3)[1];embedFrame.at<Vec3b>(i,j)[2]=frame.at<Vec3b>(i*3,j*3)[2];}}Mat roi=frame(Rect(0,0,embedFrame.cols,embedFrame.rows));addWeighted(roi,0,embedFrame,1,0,roi,-1);      imshow("Video",frame);if(waitKey(30)==27) //Esc键退出{stop = true;  }  }return 0;
} 

效果(拍摄的另一张明信片):

右上角有一个小窗,是原图大小的三分之一。

记录一下VideoCapture类中最常用的Get和Set方法的参数含义:

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)

Opencv打开内置摄像头相关推荐

  1. 虚拟机打开内置摄像头_Windows 10内置了对网络摄像机的支持

    虚拟机打开内置摄像头 Network cameras have existed since before the Wyze Cam and Nest Cam. They send their data ...

  2. 在设备管理器中找不到笔记本电脑内置摄像头的解决方法

    1.问题发现过程 中午的时候在笔记本上外接了一个摄像头,想使用这个外接的摄像头的,于是上网搜索如何使用外接摄像头,网友给出的答案是在设备管理器中的照相机菜单下选择系统自带的摄像头(我这里的摄像头的名称 ...

  3. 使用cv2.VideoCapture()函数捕获笔记本内置摄像头的拍摄画面

    有时,我们想对笔记本内置摄像的拍摄画面进行捕获并显示,那么就可以使用如下的代码进行显示,具体语句的含义已经在代码中进行了详细的备注及解释,相信大家应该很容易就可以看懂. import cv2cap = ...

  4. 笔记本内置摄像头改装外置摄像头

    拆了个老的笔记本电脑,内置摄像头感觉放着怪可惜的,体积小,感觉可以拿来干坏事啊. 去网上查过,这类摄像头有USB接口的.但是可能供电不太一样. 把背面的纸拨开,VCC D- D+ GND,那这摄像头是 ...

  5. linux卸载摄像头,如何在 Linux 中禁用内置摄像头

    如果你想知道如何禁用笔记本电脑或台式机中的网络摄像头,那么你很幸运.这个简短的教程将告诉你如何做.请继续阅读. 我在 Arch Linux 和 Ubuntu 上测试了这个指南.它的工作原理如下所述.我 ...

  6. 树莓派摄像头_把树莓派装进Apple iSight,图像质量堪比MacBook内置摄像头

    大数据文摘出品来源:medium编译:张秋玥.coolboy疫情期间大家纷纷开始在家办公,不得不买个摄像头在家用.本文作者也买了一个,这也是他进入21世纪以来买的第一个摄像头.现在,市面上能买到的摄像 ...

  7. js判断是否微信PC端打开内置浏览器

    function isWeChat(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/MicroMessenger/i) ...

  8. 手机内置摄像头接线图解_这不是我们第一次听到有关GalaxyZFold3的内置摄像头的信息...

    三星原本希望将其内置或内置摄像头技术引入其2021年的Galaxy S和Note设备.可悲的是,最近的报道与相同的可能性相矛盾.好吧,看起来财阀将在明年以某种方式带来这项技术.根据THE ELEC的一 ...

  9. uniapp打开内置地图,实现线路规划,导航及距离计算(带demo)

    uniapp打开内置地图,实现线路规划及导航 实现效果: 一:uniapp实现用户当前定位 1.首先打开定位权限:manifest.json文件->源码视图-> 在 "mp-we ...

最新文章

  1. Java锁优化思路及JVM实现
  2. 里计算两个数的总和_2个公式,在Excel里面去掉最高分和最低分计算平均值
  3. yum 方式安装nginx
  4. 我参与阿里巴巴 ASoC-Seata 的一些感悟
  5. python定时关闭进程_Python子进程,定时延迟后终止进程
  6. java如何让线程等待_如何使Java线程等待另一个线程的输出?
  7. MySQL远程访问报错解决
  8. 【DevCloud·敏捷智库】如何利用用户故事了解需求
  9. M面试题-HTTPS和HTTP的区别
  10. cnvd与cnnvd区别_漏洞编码CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD都指什么?
  11. 用python生成一段关于文字的二维码(关于刷网课的)
  12. 筛选法求100以内的素数
  13. Eclipse插件开发
  14. html计时加速,HTML-加速、再加速
  15. Matlab学习手记——输出到MathType公式编辑器
  16. Linux&Windows系统双系统
  17. (转)TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)
  18. bootstrap4 input-spinner数字增减框的使用
  19. 9.3.2另一种计算机器2
  20. 用vue实现类ant Design的日历组件

热门文章

  1. 测试人员必备-用adb抓取APP日志的方法
  2. DEDECMS如何将图片轮播做到后台控制
  3. linux zip 压缩子目录,Linux zip命令:压缩文件或目录
  4. 群控源码云控安卓PC服务器三端最新源码
  5. 让 Apache Shiro 保护你的应用
  6. BetaFlight深入传感设计之七:GPSBaro高度数据融合
  7. python练习20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
  8. 引用赋值给变量的含义
  9. mac kafka安装
  10. SOP(标准操作流程)