zoukankan      html  css  js  c++  java
  • opencv 启动摄像头 C++

    原文:http://www.cnblogs.com/zkwarrior/p/4868991.html

    http://blog.csdn.net/thefutureisour/article/details/7530177

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

    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类的析构函数会自动帮你完成。

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

  • 相关阅读:
    redis缓存和mysql数据库同步
    msf生成shellcode
    转 如何用mt7620方案的rt2860v2驱动实现wifi探针功能,网上能搜到一些方法,但是讲的好模糊?
    解决 “不支持尝试执行的操作”错误
    解决win7资源监视器不能开启
    mp3文件 ID3v2 帧标识的含义
    LoadImage函数问题
    AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
    Python计算文件MD5值
    objectARX 获取指定图层上所有实体ID
  • 原文地址:https://www.cnblogs.com/lizhigang/p/7206904.html
Copyright © 2011-2022 走看看