opencv读取MP4文件和摄像头数据

简介: opencv读取MP4文件和摄像头数据

前言

本篇文章来讲解opencv读取MP4文件和摄像头数据,opencv主要用于处理图像数据那么本篇文章就来讲解opencv读取MP4文件和摄像头数据。

一、waitKey函数

waitKey()函数是OpenCV中常用的一个函数,它用于等待用户按键输入,并返回用户按下的键值。下面我将为您详细解释waitKey()函数的功能和使用。

waitKey()函数的基本语法如下:

int waitKey(int delay = 0);

参数说明:

delay:表示等待按键的时间(以毫秒为单位)。默认值为0,表示无限等待用户按键。如果设置一个正整数值,等待指定时间后会自动返回。

waitKey()函数的返回值是一个整数,表示用户按下的键值。通常情况下,我们会将返回值与用户可能按下的按键进行比较,以执行相应的操作。

二、VideoCapture类

VideoCapture类是OpenCV中用于从视频文件或摄像头中读取视频流的类。它提供了一系列函数和方法,使您能够读取视频流的帧并进行处理。下面我将为您详细解释VideoCapture类及其常用函数。

VideoCapture类的基本语法如下:

VideoCapture video("filename");  // 从文件中读取视频流
VideoCapture video(deviceID);    // 从摄像头设备中读取视频流

参数说明:

filename:表示要读取的视频文件的路径。

deviceID:表示要读取的摄像头设备的索引。通常,0表示默认摄像头设备。

VideoCapture类的常用函数如下:

1.isOpened():检查视频流是否成功打开。

if (video.isOpened())
{
    // 视频成功打开
}

2.read():读取视频流的下一帧。

Mat frame;
video.read(frame);  // 将下一帧视频存储在Mat对象中

3.set(CAP_PROP_X, value):设置视频流的属性。

video.set(CAP_PROP_FRAME_WIDTH, 640);   // 设置帧宽度为640
video.set(CAP_PROP_FRAME_HEIGHT, 480);  // 设置帧高度为480

4.get(CAP_PROP_X):获取视频流的属性值。

double width = video.get(CAP_PROP_FRAME_WIDTH);   // 获取帧宽度
double height = video.get(CAP_PROP_FRAME_HEIGHT);  // 获取帧高度

5.release():释放视频流资源。

video.release();

读取MP4文件:

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
    VideoCapture video("1.mp4");
    if (!video.isOpened())
    {
        printf("Failed to open video file.\n");
        return -1;
    }
    while (1)
    {
        Mat frame;
        if (!video.read(frame))
            break;
        // 处理视频帧
        imshow("Frame", frame);
        if (waitKey(30) == 27)
            break;
    }
    video.release();
  return 0;
}

读取摄像头数据:

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
  VideoCapture vcaptrue;
  Mat mpic;
  vcaptrue.open(1);//打开摄像头
  if (!vcaptrue.isOpened())
  {
    return -1;
  }
  while (1)
  {
    vcaptrue >> mpic;
    imshow("读取摄像头数据",  mpic);
    waitKey(40);
  }
  return 0;
}

运行效果:

保存读取到的图形:

使用imwrite就可以将图片保存下来了:

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
  //读取mp4文件
  VideoCapture vcaptrue;
  Mat mpic;
  vcaptrue.open(0);
  int id = 0;
  if (!vcaptrue.isOpened())
  {
    return -1;
  }
  while (1)
  {
    vcaptrue >> mpic;
    imshow("读取摄像头数据",  mpic);
    if (waitKey(20) == 32)//按下空格保存图片
    {
      string picname = to_string(id) + ".jpg";
      id++;
      imwrite(picname, mpic);
    }
  }
  return 0;
}

按下空格后保存图片:

总结

本篇文章就讲解到这里,下篇文章继续我们的opencv。


相关文章
|
4月前
|
计算机视觉 Python
Opencv学习笔记(二):如何将整个文件下的彩色图片全部转换为灰度图
使用OpenCV库将一个文件夹内的所有彩色图片批量转换为灰度图,并提供了相应的Python代码示例。
55 0
Opencv学习笔记(二):如何将整个文件下的彩色图片全部转换为灰度图
|
4月前
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
184 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
4月前
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
194 1
|
4月前
|
编解码 计算机视觉 Python
Opencv学习笔记(九):通过CV2将摄像头视频流保存为视频文件
使用OpenCV库通过CV2将摄像头视频流保存为视频文件,包括定义视频编码格式、设置保存路径、通过write写入视频文件,并提供了相应的Python代码示例。
232 0
|
6月前
|
计算机视觉 索引
OpenCv实时设置摄像头参数/获得摄像头参数值的方法论
这篇文章提供了一个OpenCV的实例教程,展示了如何使用`createTrackbar()`函数实时设置和获取摄像头参数值,如饱和度、Gamma和亮度,并通过回调函数在程序中连续修改这些参数。
|
6月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
557 1
|
4月前
|
缓存 监控 计算机视觉
视频监控笔记(三):opencv结合ffmpeg获取rtsp摄像头相关信息
本文介绍了如何使用OpenCV结合FFmpeg获取RTSP摄像头信息,包括网络架构、视频监控系统组成、以及如何读取和显示网络摄像头视频流。
152 1
|
4月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
283 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
4月前
|
编解码 关系型数据库 计算机视觉
Opencv学习笔记(十一):opencv通过mp4保存为H.264视频
本文介绍了如何在OpenCV中通过使用cisco开源的openh264库来解决不支持H.264编码的问题,并提供了完整的代码示例。
316 0
Opencv学习笔记(十一):opencv通过mp4保存为H.264视频
|
4月前
|
JSON 数据格式 计算机视觉
Opencv实用笔记(一): 获取并绘制JSON标注文件目标区域(可单独保存目标小图)
本文介绍了如何使用OpenCV和Python根据JSON标注文件获取并绘制目标区域,同时可将裁剪的图像单独保存。通过示例代码,展示了如何读取图片路径、解析JSON标注、绘制标注框并保存裁剪图像的过程。此外,还提供了相关的博客链接,供读者进一步学习。
93 0

热门文章

最新文章