Opencv实现读取摄像头和视频数据

实际上,按一定速度读取摄像头视频图像后,便可以对图像进行各种处理了。

那么获取主要用到的是VideoCapture类,一个demo如下:

//如果有外接摄像头,则ID为0,内置为1,否则用0就可以表示内置摄像头
  cv::VideoCapture cap(0);
  //判断摄像头是否打开
  if(!cap.isOpened())
  {
    return -1;
  }  

  cv::Mat myframe;
  cv::Mat edges;  

  bool stop = false;
  while(!stop)
  {
    //获取当前帧
    cap>>myframe;
    //转化为灰度图
    cv::cvtColor(myframe, edges, CV_BGR2GRAY);
    //高斯滤波器
    cv::GaussianBlur(edges, edges, cv::Size(7,7), 1.5, 1.5);
    //Canny算子检测边缘
    cv::Canny(edges, edges, 0, 30, 3);
    //显示边缘
    cv::imshow("current frame",edges);
    if(cv::waitKey(30) >=0)
      stop = true;
  }
  cv::waitKey(0);

同样的,如果要读取一段视频文件,视频文件可以看做是一连串的视频帧组成,而显示时设置一定延时,便可以按一定速度显示,一个demo如下:

// Open the video file
  cv::VideoCapture capture("../images/bike.avi");
// check if video successfully opened
if (!capture.isOpened())
return 1; 

// Get the frame rate
double rate= capture.get(CV_CAP_PROP_FPS); 

bool stop(false);
cv::Mat frame; // current video frame
cv::namedWindow("Extracted Frame"); 

// Delay between each frame
// corresponds to video frame rate
int delay= 1000/rate; 

//用于设置帧的移动位置。
input_video.set(CV_CAP_PROP_POS_FRAMES,100);
// for all frames in video
while (!stop) { 

// read next frame if any
if (!capture.read(frame))
break; 

 cv::imshow("Extracted Frame",frame); 

// introduce a delay
// or press key to stop
if (cv::waitKey(delay)>=0) 

stop= true;
} 

// Close the video file
capture.release(); 

cv::waitKey(); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • VS2010+Opencv+MFC读取图像和视频显示在Picture控件

    VS2010+Opencv+MFC读取图像和视频显示在Picture控件,供大家参考,具体内容如下 1.新建MFC对话框应用程序. 其余选项默认,单击完成,创建出对话框应用程序.删掉原来自带的一些控件,添加picture控件和两个按钮. 2.由于以后的代码会用到CvvImage类,而opencv2.3以后就去掉了对它的支持,这里先介绍添加CvvImage支持的方法,直接能用的可以略过这一步. 如下图添加相应的文件: 这里附上两个文件的源码方便使用. #pragma once #ifndef CV

  • 基于OpenCV读取摄像头实现单个人脸验证MFC程序

    与上一篇博客类似,这篇博客介绍使用OpenCV实现的MFC程序,可以实现单个人脸的验证,并在图像和界面给出识别结果.效果图如下: 置信度一栏可以填写判定的阈值,默认为70.打开摄像头才能进行验证或拍照,拍照之前可以清除之前拍摄的训练图片,可以拍摄多张用于识别.其中mfc中的图像显示需要用到CvImage.cpp和CvImage.h两个文件,该代码在比较新的OpenCV内已经没有了,所以可以直接用我代码里的. 有人说代码的检测率不高,其实可以归结为两方面的原因,第一人脸检测率不高,这个可以通过嵌套

  • opencv实现读取视频保存视频

    不得不说opencv是个强大的东东,以前做一个项目的一个模块时使用到进行图形处理,这次是想将一个视频的播放放慢,以前在网上看到opencv有这个功能,今天就不小心尝试了下,东西不多,主要是做个小记录还有一点要注意的小问题说一下,代码不多,基本上也都是copy的网上的 #include <iostream> #include <assert.h> #include <opencv/cv.h> #include <opencv/highgui.h> #inclu

  • Opencv实现读取摄像头和视频数据

    实际上,按一定速度读取摄像头视频图像后,便可以对图像进行各种处理了. 那么获取主要用到的是VideoCapture类,一个demo如下: //如果有外接摄像头,则ID为0,内置为1,否则用0就可以表示内置摄像头 cv::VideoCapture cap(0); //判断摄像头是否打开 if(!cap.isOpened()) { return -1; } cv::Mat myframe; cv::Mat edges; bool stop = false; while(!stop) { //获取当前

  • Python+OpenCV采集本地摄像头的视频

    本文实现了用Python和OpenCV配合,调用本地摄像头采集视频,基本上函数的话看opencv的官方文档就Ok了(The OpenCV Reference Manual  Release 2.4.7.0) 上代码: import cv2 import cv2.cv def getCam(): window_name='show image' cv2.namedWindow(window_name,cv2.WINDOW_NORMAL) video_cap_obj=cv2.VideoCapture

  • pyqt5+opencv 实现读取视频数据的方法

    1.openCV读取视频数据 import cv2 if __name__ == '__main__': videoPath = "./dataSet/3700000000003_13-38-20.055.mp4" nameWindow = "Detection window" # 窗体名称 cv2.namedWindow(nameWindow) # 设置窗体 capture = cv2.VideoCapture(videoPath) if capture.isOp

  • python+opencv打开摄像头,保存视频、拍照功能的实现方法

    以下代码是保存视频 # coding:utf-8 import cv2 import sys reload(sys) sys.setdefaultencoding('utf8') cap = cv2.VideoCapture(0) cap.set(3,640) cap.set(4,480) cap.set(1, 10.0) #此处fourcc的在MAC上有效,如果视频保存为空,那么可以改一下这个参数试试, 也可以是-1 fourcc = cv2.cv.CV_FOURCC('m', 'p', '4

  • python 读取摄像头数据并保存的实例

    如下所示: import cv2 cap = cv2.VideoCapture(0) k = 0 while k != 27: # esc ret, img = cap.read(0) cv2.imshow('233', img) k = cv2.waitKey(20) & 0xff print( 'begin to record images-' ) for ii in range(1000): ret, img = cap.read(0) cv2.imshow('233', img) cv2

  • pygame+opencv实现读取视频帧的方法示例

    由于pygame.movie.Movie.play() 只支持MPEG格式的视频,且 pygame版本大于1.9.5好像已经不支持这个模块了,所以决定使用与opencv读取视频帧的画面,利用pygame的surface刷新窗口. 有基础的小伙伴,代码还是很好理解,直接上代码 pygame.time.Clock()同步时间 import pygame from pygame.locals import * import cv2 import sys import time FPS = 30 Fra

  • C#+EmguCV使用摄像头读取、保存视频

    本文实例为大家分享了C#+EmguCV使用摄像头读取.保存视频的具体代码,供大家参考,具体内容如下 在Emgucv中调用摄像头需要用到VideoCapture类 这个类有四种重载的方式 1.不写参数,那么初始化的时候就会调用默认的摄像头 2.一个int类型的数字,这个数字的含义是摄像头的索引.会按照索引来初始化摄像头 3.一个字符串,这个字符串的含义是文件名或视频流名.初始化会读取视频文件或视频流 4.CaptureType 的枚举 这个枚举的内容很多,这里不再赘述 新建一个控制台应用程序来实现

  • 如何使用Python的OpenCV库处理图像和视频

    目录 介绍 计算机视觉 OpenCV 应用: 安装 使用 OpenCV 处理图像 1. 从文件中读取图像 2. 调整图像大小: 3. 旋转图像 4. 翻转图像: 5. 重写图像 6. 裁剪图像 7. 绘制形状 使用 OpenCV 处理视频 1. 捕获视频帧的属性: 2. 读取视频文件 3. 编写视频文件 结论 总结 介绍 众所周知,计算机视觉在机器学习和人工智能领域获得了巨大的普及.图像识别技术允许计算机处理比人眼更多的信息,通常更快.更准确,或者只是在人们不参与观看的情况下处理.因此,你可能想

  • python使用opencv按一定间隔截取视频帧

    关于opencv OpenCV 是 Intel 开源计算机视觉库 (Computer Version) .它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. OpenCV 拥有包括 300 多个 C 函数的跨平台的中.高层 API .它不依赖于其它的外部库 -- 尽管也可以使用某些外部库. OpenCV 对非商业应用和商业应用都是免费 的.同时 OpenCV 提供了对硬件的访问,可以直接访问摄像头,并且 opencv 还提供了一个简单的 GUI(graph

随机推荐