笔记本内置摄像头视频播放和存储
时间:2022-07-23
本文章向大家介绍笔记本内置摄像头视频播放和存储,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
软件环境配置:
系统环境:WIN10
开发环境:VS2017
opencv:opencv3.4.0
本实例的作用:
- 读取摄像头或者本地视频数据进行播放
- 写入视频数据
- 读取图片在子窗口显示、resize等
-
void
playVideoFromCam(){
//从摄像头读入视频
VideoCapture capture(0); //0笔记本内置摄像头,1调用usb摄像头
while (1) { Mat frame; //定义一个Mat变量,用于存储每一帧的图像 capture >> frame; //读取当前帧 resize(frame, frame, Size(360, 240)); //改变图像大小 cvtColor(frame, frame, CV_BGR2GRAY); //转为灰度图 imshow("aa", frame); waitKey(30); //延时30ms } }
code:
//#include<opencv2corecore.hpp>
//#include<opencv2highguihighgui.hpp>
#include <opencv2opencv.hpp>
#include "iostream"
using namespace cv;
//void filePlayVideo();
void videoReadWriter();
int main(){
//filePlayVideo();
videoReadWriter();
system("pause");
return 0;
}
void playVideoFromCam()
{
//从摄像头读入视频
VideoCapture capture(0); //0笔记本内置摄像头,1调用usb摄像头
while (1) {
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture >> frame; //读取当前帧
resize(frame, frame, Size(360, 240)); //改变图像大小
cvtColor(frame, frame, CV_BGR2GRAY); //转为灰度图
imshow("aa", frame);
waitKey(30); //延时30ms
}
}
void imageShow()
{
Mat img = imread("Camera20200506134321196.jpg");
namedWindow("游戏原画");
resize(img, img, Size(360, 240));
imshow("游戏原画", img);
waitKey(6000);
}
void filePlayVideo()
{
/***********************************方法1*************************************/
VideoCapture capture;
Mat frame;
frame = capture.open("CAM2202002221459264482.wmv"); //capture.open()的参数为0时为读取摄像头:frame= capture.open(0);
if (!capture.isOpened())
{
printf("can not open ...n");
}
namedWindow("output", CV_WINDOW_AUTOSIZE);
while (capture.read(frame))
{
imshow("output", frame);
waitKey(40);
}
capture.release();
}
//通过摄像头获取视频,然后通过capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT)获取当前帧的宽度和高度,
//创建一个VideoWriter类对象writer进行视频的写入。
void videoWriter()
{
VideoCapture capture;
capture.open(0);
if (!capture.isOpened())
{
printf("can not open ...n");
}
Size size = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT));
VideoWriter writer;
writer.open("E:/image/a2.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, size, true);
Mat frame, gray;
namedWindow("output", CV_WINDOW_AUTOSIZE);
while (capture.read(frame))
{
//转换为黑白图像
cvtColor(frame, gray, COLOR_BGR2GRAY);
//二值化处理
threshold(gray, gray, 0, 255, THRESH_BINARY | THRESH_OTSU);
cvtColor(gray, gray, COLOR_GRAY2BGR);
imshow("output", gray);
writer.write(gray);
waitKey(10);
}
waitKey(0);
capture.release();
}
//從視頻讀取視頻后再寫入指定的文件
void videoReadWriter()
{
VideoCapture capture;
Mat frame, gray;
frame = capture.open("CAM2202002221459264482.wmv"); //capture.open()的参数为0时为读取摄像头:frame= capture.open(0);
if (!capture.isOpened())
{
printf("can not open ...n");
}
namedWindow("output", CV_WINDOW_AUTOSIZE);
Size size = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT));
VideoWriter writer;
writer.open("a1.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25, size, true);
while (capture.read(frame))
{
//转换为黑白图像
cvtColor(frame, gray, COLOR_BGR2GRAY);
//二值化处理
threshold(gray, gray, 0, 255, THRESH_BINARY | THRESH_OTSU);
cvtColor(gray, gray, COLOR_GRAY2BGR);
imshow("output", gray);
writer.write(gray);
waitKey(40);
}
capture.release();
}
根目錄:
a1.avi
- 在CentOS 7上安装Nginx服务器
- 卷积神经网络 | 深度学习笔记1
- 【直播】我的基因组65:看看哪些基因的突变较多,哪些较少
- angular之interceptors拦截器
- js list数据 转 树状 层级 JSON,递归生成树状 层级 JSON
- jquery 图片文件转base64 显示
- AngularJS 用 $http.jsonp 跨域SyntaxError问题
- 简单的java socket 示例
- Hadoop二次开发环境构建
- Android EditText 获得输入焦点 以及requestfocus()失效的问题
- 【直播】我的基因组68:看看哪些基因的突变较多,哪些较少
- GDI+编程
- GDI编程
- ADO访问数据库
- 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 数组属性和方法
- 【线性回归】标准方程法
- 133: error: in C++98 XXX must be initialized by constructor, not by '{...}'
- spring之如何将验证错误信息显示在相应界面
- 【python-leetcode329-深度优先搜索】矩阵中的最长递增路径
- 带权树 -- 哈夫曼树,与它的那张哈夫曼编码表
- 【python-动态规划】0-1背包问题
- python之列表推导和生成器表达式
- 二叉树的前中后序遍历
- 【tensorflow2.0】处理结构化数据-titanic生存预测
- 【pandas】pandas中的常见函数
- 走进STL - 哈希表,散装称重么
- 第八届蓝桥杯省赛javaB组题目解析
- 拥抱STL - 类/结构体元素查询与排序
- 【tensorflow2.0】处理图片数据-cifar2分类
- 操作系统实验多线程编程中的读者优先和写者优先