首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
通过opencv加载、生存视频
返回列表
发新帖
通过opencv加载、生存视频
[复制链接]
发表于 2025-11-19 14:25:01
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
【欢迎关注编码小哥,学习更多实用的编程方法和本领】
代码
举例:
//opencv加载本地视频文件的2种方法
//方法一:
#if 0
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
//using namespace cv;
int main()
{
// 创建VideoCapture对象
cv::VideoCapture capture;
// 打开视频文件
capture.open("D:/opencv/videos/xxx.mp4");
// 检查视频是否成功打开
if (!capture.isOpened())
{
std::cout << "无法打开视频!" << std::endl;
return -1;
}
std::cout << "视频加载成功" << std::endl << std::endl;
// 获取视频信息 - 帧宽和帧高
double frameWidth = capture.get(cv::CAP_PROP_FRAME_WIDTH);
double frameHeight = capture.get(cv::CAP_PROP_FRAME_HEIGHT);
std::cout << "视频帧宽为: " << frameWidth << std::endl;
std::cout << "视频帧高为: " << frameHeight << std::endl;
// 获取视频信息 - 帧率
double frameRate = capture.get(cv::CAP_PROP_FPS);
std::cout << "视频帧率为: " << frameRate << std::endl;
// 获取视频信息 - 总帧数
double totalFrames = capture.get(cv::CAP_PROP_FRAME_COUNT);
std::cout << "视频总帧数为: " << totalFrames << std::endl;
// 循环读取视频帧
cv::Mat frameImg;
long nCount = 1;
while (true)
{
// 读取当前帧
capture >> frameImg;
// 显示当前帧
if (!frameImg.empty())
{
imshow("当前帧", frameImg);
if (char(cv::waitKey(int(1000 / frameRate))) == 'q') // 按'q'键退出
break;
}
else
{
break;
}
nCount++;
}
// 释放视频资源
capture.release();
cv::waitKey(1);
cv::destroyAllWindows();
return 0;
}
#endif
//方法二:
#if 0
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
// 创建VideoCapture对象
VideoCapture capture;
// 打开视频文件
capture.open("D:/opencv/videos/big_buck_bunny.mp4");
// 检查视频是否成功打开
if (!capture.isOpened())
{
std::cout << "无法打开视频!" << std::endl;
return -1;
}
std::cout << "视频加载成功" << std::endl << std::endl;
// 获取视频信息 - 帧宽和帧高
double frameWidth = capture.get(CAP_PROP_FRAME_WIDTH);
double frameHeight = capture.get(CAP_PROP_FRAME_HEIGHT);
std::cout << "视频帧宽为: " << frameWidth << std::endl;
std::cout << "视频帧高为: " << frameHeight << std::endl;
// 获取视频信息 - 帧率
double frameRate = capture.get(CAP_PROP_FPS);
std::cout << "视频帧率为: " << frameRate << std::endl;
// 获取视频信息 - 总帧数
double totalFrames = capture.get(CAP_PROP_FRAME_COUNT);
std::cout << "视频总帧数为: " << totalFrames << std::endl;
// 循环读取视频帧
Mat frameImg;
int nCount = 1;
while (true)
{
// 读取当前帧
capture >> frameImg;
// 显示当前帧
if (!frameImg.empty())
{
imshow("当前帧", frameImg);
if (char(waitKey(int(1000 / frameRate))) == 'q') // 按'q'键退出
break;
}
else
{
break;
}
nCount++;
}
// 释放视频资源
capture.release();
waitKey(1);
destroyAllWindows();
return 0;
}
#endif
//从摄像头读取视频流
#if 0
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
// 创建VideoCapture对象
VideoCapture capture;
// 打开摄像头
capture.open(0,CAP_DSHOW);
// 检查摄像头是否成功打开
if (!capture.isOpened())
{
std::cout << "无法打开摄像头!" << std::endl;
return -1;
}
std::cout << "摄像头加载成功" << std::endl << std::endl;
// 获取摄像头信息 - 帧宽和帧高
double frameWidth = capture.get(CAP_PROP_FRAME_WIDTH);
double frameHeight = capture.get(CAP_PROP_FRAME_HEIGHT);
std::cout << "摄像头帧宽为: " << frameWidth << std::
复制
代码
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
分布式数据库
公有云
SQL-Server
物联网
Java
运维.售后
linux
Oracle
大连密封材料
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表