zoukankan      html  css  js  c++  java
  • 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函数还可以释放矩阵。

  • 相关阅读:
    java类加载机制
    java反射
    java注解
    设计模式 单例模式
    #1015 : KMP算法
    idea 快捷键
    基础数据类型综合
    工厂模式 VS 策略模式
    AtomicI 多线程中的原子操作
    ThreadLocal<T>
  • 原文地址:https://www.cnblogs.com/Shymuel/p/8495367.html
Copyright © 2011-2022 走看看