OpenCV学习(2)读取视频和摄像头

#include "stdafx.h"
#include<iostream>
#include<string>
#include<sstream>
using namespace std;

#include"opencv2/core.hpp"
#include"opencv2/highgui.hpp"
using namespace cv;

int main( int argc, const char** argv)
{

  VideoCapture cap(0); //打开默认相机
  if (!cap.isOpened()) return -1;

  namedWindow(
"Video", 1);   for (;;)   {     Mat frame;     cap >> frame; //摄像机的帧     imshow("Video", frame);     if (waitKey(30) != -1) break;   }
  
  //释放的摄像机或视频cap   cap.release(); return 0; }

 

 

好吧,书本上这一节本来重点讲的是命令行解析器。但书上的代码在我的vs上无法编译通过(课本的编译环境是Cmake)。所以我只好自己写。

 

OpenCV新版本中,videocapture类属于videoio子模块。他的参数可以是文件的路径(一个字符串)或者0(表示打开默认相机)。当然也可以设置路径让他打开外连摄像机。

检查是否可以读取文件名或者摄像机,可以使用isOpened函数。

 

最后,用namedWindow函数创建一个显示帧的窗口。在非完成循环中,如果正确地检索帧,通过>>操作可以抓住每个帧,并且用imshow函数显示图像。同时,我设置了waitKey函数来让我可以停止循环。waitKey()函数的返回值是按键的ASCII码。什么都不按的ASCII码是-1。所以那句话的意思就是,只要我按下任意一个键(不包括鼠标),程序就会结束运行。

 

不要忘记用release函数释放所有的视频资源,否则RAM内存会被全部消耗掉。release函数还可以释放矩阵。

转载于:https://www.cnblogs.com/Shymuel/p/8495367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值