OpenCV 摄像头与视频读取并显示
时间:2022-07-22
本文章向大家介绍OpenCV 摄像头与视频读取并显示,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
摄像头与视频读取并显示
相关函数说明
保存图像信息的结构体
- opencv2:
CvCapture
,操作采用指针。 - opencv3:
VideoCapture
,操作采用变量。
打开到函数
- opencv2:
cvCreateCameraCapture(-1)
读入摄像头视频,cvCreateFileCapture("路径")
读入视频文件。 - opencv3:open一个函数搞定,文件和摄像头是不同的重载函数。
读取视频流的形式:
- opencv2:
cvQueryFrame(capture)
- opencv3:
<<
,经过重载到operate函数。
图像显示:
- opencv2:在main一开头声明窗口:
cvNamedWindow
,后面用cvShowImage
函数显示 - opencv3:
imshow
全部搞定。当然,cvNamedWindow
也有它到代替品:namedWindow()
;
控制帧率
- opencv2:
cvWaitKey
- opencv3:
waitKey
释放保存图像信息到结构体
- opencv2:
cvReleaseCapture()
函数 - opencv3:作为一个变量,显然是由系统释放到,完全不需要管。不过严谨起见,也可以加上一行
capture.release()
;
OpenCV3 参考程序
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc,char **argv)
{
//VideoCapture capture(0); //// 从摄像头读入视频
VideoCapture capture("test.mp4"); //从本地读入视频
namedWindow("my vidio",CV_WINDOW_AUTOSIZE);
//循环显示每一帧
while(capture.isOpened())
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取摄像头当前帧并传给frame
/*中间可以处理摄像头当前帧的图像*/
imshow("my vidio",frame); //显示当前帧
if(waitKey(40) == 27){
break; //按ESC就退出
}
}
capture.release();
cv::destroyAllWindows();
return 0;
}
OpenCV2 参考程序
#include <QCoreApplication>
#include <cv.hpp>
#include <highgui.h>
#include <video.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
cvNamedWindow("mp4");
/*CvCapture结构体,保存图像信息,cvCreateCameraCapture(-1)读入摄像头视频,
* cvCreateFileCapture("路径")读入视频文件*/
CvCapture * capture=cvCreateCameraCapture(-1);
IplImage* frame;
while(1)
{
//cvQueryFrame(),读入CvCapture结构体指针,将下一帧加载到内存
frame=cvQueryFrame(capture);
if(!frame)
break;
//cvShowImage()在窗口中显示
cvShowImage("mp4",frame);
//cvWaitKey()触发按键、控制帧率
char c =cvWaitKey(33);
if(c==27)
break;
}
//cvReleaseCapture()释放结构体指针
cvReleaseCapture(&capture);
}
参考
[比较opencv2、opencv3关于读取视频文件、摄像头的编程风格]https://blog.csdn.net/qq_34917736/article/details/77427596
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JAVA实现UTC时间转换成北京时间
- JDK8 LocalDateTime转换成时间戳
- Grafana创建zabbix自定义template(模板)
- 一条SQL引发的“血案”:
- Grafana安装配置Elasticsearch插件
- Elasticsearch升级踩坑记之使用snapshot备份数据
- RabbitMQ的安装及集群搭建方法
- CentOs7搭建rabbitmq集群
- Rabbitmq haproxy keepalived ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN.
- IDEA maven+spring mvc简单项目
- 程序员用python给了女友一个七夕惊喜!
- 微信小程序开发实战(21):发起HTTPS请求
- 打破国外垄断,开发中国人自己的编程语言(2):使用监听器实现计算器
- 自定义你的github主页
- nginx配置ssl证书实现https