opencv 启动摄像头 C++
2015-10-11 11:27
246 查看
/article/2803017.html
在网上看了许多关于OpenCV启动摄像头的资料,但是,都是基于C语言的,代码又臭又长,(其实主要是因为我学的OpenCV就是用C++的,C语言的基本数据结构不太熟悉),所以一直想找一个用C++写的程序,最后让我在OpenCV自带的英文参考手册上找见了,整个代码30行都不到!nice啊!我对代码做了一点修改,发上来吧!
[cpp] view plaincopy
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0);
if(!cap.isOpened())
{
return -1;
}
Mat frame;
Mat edges;
bool stop = false;
while(!stop)
{
cap>>frame;
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("当前视频",edges);
if(waitKey(30) >=0)
stop = true;
}
return 0;
}
对代码的几点说明:
1. VideoCapture类有两种用法,一种是VideoCapture(const string& filename)用来打开视频文件,一种是VideoCapture(int device)用来打开设备。
2. isOpened函数用来检测VideoCapture类是否打开成功。
3. C++版本的OpenCV有一个明显的好处,就是不需要释放操作(不论是视频还是图片),VideoCapture类的析构函数会自动帮你完成。
由于本人长相丑陋,所以对摄像头获取的彩色图像进行了一些简单的处理:转为灰度图像、高斯滤波,边沿检测。这样大家就不会受惊了,哈哈!
在网上看了许多关于OpenCV启动摄像头的资料,但是,都是基于C语言的,代码又臭又长,(其实主要是因为我学的OpenCV就是用C++的,C语言的基本数据结构不太熟悉),所以一直想找一个用C++写的程序,最后让我在OpenCV自带的英文参考手册上找见了,整个代码30行都不到!nice啊!我对代码做了一点修改,发上来吧!
[cpp] view plaincopy
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0);
if(!cap.isOpened())
{
return -1;
}
Mat frame;
Mat edges;
bool stop = false;
while(!stop)
{
cap>>frame;
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("当前视频",edges);
if(waitKey(30) >=0)
stop = true;
}
return 0;
}
对代码的几点说明:
1. VideoCapture类有两种用法,一种是VideoCapture(const string& filename)用来打开视频文件,一种是VideoCapture(int device)用来打开设备。
2. isOpened函数用来检测VideoCapture类是否打开成功。
3. C++版本的OpenCV有一个明显的好处,就是不需要释放操作(不论是视频还是图片),VideoCapture类的析构函数会自动帮你完成。
由于本人长相丑陋,所以对摄像头获取的彩色图像进行了一些简单的处理:转为灰度图像、高斯滤波,边沿检测。这样大家就不会受惊了,哈哈!
相关文章推荐
- 再谈C++中的has-a关系(通过复合塑模出has-a、明智而审慎地使用Private继承)
- 再谈C++中的has-a关系(通过复合塑模出has-a、明智而审慎地使用Private继承)
- 一起talk C栗子吧(第五十五回:C语言实例--图的最短路径三)
- C++引用-运行时结构分析
- 黑马程序员--C语言之指针<二>
- C++构造函数详解及显式调用构造函数
- C语言入门之流程控制语句及运算符号
- C++为什么要提出引用
- C++ 函数--参数传递
- 【c语言】 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。
- 头文件中的#ifndef #define #endif 作用
- 【Cpp】分班座位问题,求所有座位方式
- ACM题目中输入数据的处理(C++版)
- C语言之转义字符、变量的内存机制
- 【LeetCode从零单刷】Ugly Number I, II & Super Ugly Number
- 【C语言】判断花括号{}是否匹配
- C++结构体内存对齐小结
- VS2010中“工具>选项中的VC++目录编辑功能已被否决”解决方法
- C++与类型转换相关的四个关键字及其特点
- [C/C++基础知识] 一篇就让你彻底搞懂qsort快速排序的文章