opencv4从avi视频中提取图片/opencv4从摄像头抓取图像_C++版本

2024-08-30 23:18

本文主要是介绍opencv4从avi视频中提取图片/opencv4从摄像头抓取图像_C++版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.从视频提取图像

2.从摄像头提取图像

3.之前的opencv2老代码


1.从视频提取图像

opencv4使用如下代码读取视频数据:

cv::VideoCapture cap;
cap.open(video_name);cv::Mat frame;
cap >> frame;//读取方式1
cap.read(frame); //读取方式2int video_fps = cap.get(CAP_PROP_FPS); //获取帧率
int width  = cap.get(CAP_PROP_FRAME_WIDTH); 
int height = cap.get(CAP_PROP_FRAME_HEIGHT); 
//cv::VideoCapture::get(CAP_PROP_FPS)获取帧率

另外,makefile中需要链接的库有opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_video opencv_videoio,最开始没有加libopencv_videoio.so,报错undefined reference to `cv::VideoCapture::VideoCapture()',加上opencv_videoio之后就好了,

2.从摄像头提取图像

opencv4用下面代码从摄像头抓取图像

VideoCapture capture(0);//打开摄像头,获取图像。
while (capture.isOpened())
{Mat frame;capture >> frame;
}

3.之前的opencv2老代码

 opencv4不要用以下代码,opencv4中已经没有IplImage这种了,而且cvCaptureFromAVI也会提示没有声明。

//初始化一个视频文件捕捉器
CvCapture* capture = cvCaptureFromAVI(filename);
//获取视频信息
cvQueryFrame(capture);
frameH    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
frameW    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);while(1)
{        IplImage *frame  = cvQueryFrame(capture); //获取一帧图片if(i >=numFrames || i >= NUM_FRAME ) break;//这里判断视频文件是否读完,除了用帧数判断外,也可以直接用下面这行代码判断。// if(!frame) break ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 }                                                                                另外,将imlimage转换为Mat
Mat::Mat(const IplImage* img, bool copyData=false);

 

 

参考文献:

opencv3 opencv4读取视频并保存为视频以及图片    https://blog.csdn.net/mao_hui_fei/article/details/79969020

【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解    https://blog.csdn.net/guduruyu/article/details/68486063

OpenCV读取视频、OpenCV提取视频每一帧、每一帧图片合成新的AVI视频  https://www.cnblogs.com/gune/articles/3374651.html

OPENCV读取AVI视频失败 视频帧提取以及图片合成视频    https://www.cnblogs.com/xubenben/archive/2012/12/01/2797689.html

 

这篇关于opencv4从avi视频中提取图片/opencv4从摄像头抓取图像_C++版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122217

相关文章

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p