我的OpenCV学习笔记(11):启动摄像头

16 篇文章 0 订阅
11 篇文章 0 订阅

在网上看了许多关于OpenCV启动摄像头的资料,但是,都是基于C语言的,代码又臭又长,(其实主要是因为我学的OpenCV就是用C++的,C语言的基本数据结构不太熟悉),所以一直想找一个用C++写的程序,最后让我在OpenCV自带的英文参考手册上找见了,整个代码30行都不到!nice啊!我对代码做了一点修改,发上来吧!

[cpp]  view plain copy
  1. #include <opencv2/highgui/highgui.hpp>  
  2. #include <opencv2/imgproc/imgproc.hpp>  
  3. #include <opencv2/core/core.hpp>  
  4.   
  5. using namespace cv;  
  6.   
  7.   
  8. int main()  
  9. {  
  10.     VideoCapture cap(0);  
  11.     if(!cap.isOpened())  
  12.     {  
  13.         return -1;  
  14.     }  
  15.     Mat frame;  
  16.     Mat edges;  
  17.   
  18.     bool stop = false;  
  19.     while(!stop)  
  20.     {  
  21.         cap>>frame;  
  22.         cvtColor(frame, edges, CV_BGR2GRAY);  
  23.         GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);  
  24.         Canny(edges, edges, 0, 30, 3);  
  25.         imshow("当前视频",edges);  
  26.         if(waitKey(30) >=0)  
  27.             stop = true;  
  28.     }  
  29.     return 0;  
  30. }  

对代码的几点说明:

1. VideoCapture类有两种用法,一种是VideoCapture(const string& filename)用来打开视频文件,一种是VideoCapture(int device)用来打开设备。

2. isOpened函数用来检测VideoCapture类是否打开成功。

3. C++版本的OpenCV有一个明显的好处,就是不需要释放操作(不论是视频还是图片),VideoCapture类的析构函数会自动帮你完成。

由于本人长相丑陋,所以对摄像头获取的彩色图像进行了一些简单的处理:转为灰度图像、高斯滤波,边沿检测。这样大家就不会受惊了,哈哈!

随便截了一张图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值