#include <opencv2/opencv.hpp>用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件,但输出视频文件为0kb
#include <iostream>
int main() {
cv::VideoCapture cap("D:\\视图\\sp\\标注使用.mp4");
if (!cap.isOpened()) {
std::cout << "Error opening video stream or file" << std::endl;
return -1;
}
int codec = cv::VideoWriter::fourcc('m', 'p', '4', 'v');
double fps = cap.get(cv::CAP_PROP_FPS);
cv::Size size = cv::Size((int)cap.get(cv::CAP_PROP_FRAME_WIDTH), (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT));
cv::VideoWriter writer("output.mp4", codec, fps, size, true);
cv::Mat frame, grayFrame, equalizedFrame;
while (cap.read(frame)) {
cv::cvtColor(frame, grayFrame, cv::COLOR_BGR2GRAY);
cv::equalizeHist(grayFrame, equalizedFrame);
writer.write(equalizedFrame);
}
cap.release();
writer.release();
return 0;
}
用opencv c/c++ 转换成灰度图,然后做一下直方图均衡,输出mp4文件
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
29条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
要将视频转换为灰度图像并进行直方图均衡化,并将其保存为MP4格式,你需要按照以下步骤操作:
步骤 1: 初始化OpenCV库
首先,确保已经安装了OpenCV库(cv::),如果你还没有安装,可以通过下面的命令安装:
pip install opencv-python
步骤 2: 导入必要的模块
在C/C++环境中,导入所需的模块:
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>
步骤 3: 打开视频流
打开视频流,获取相关信息:
cv::VideoCapture cap("D:/视图/sp/标注使用.mp4"); if (!cap.isOpened()) { std::cerr << "Error opening video stream or file" << std::endl; return -1; } int codec = cv::VideoWriter::fourcc('m', 'p', '4', 'v'); // 使用默认编码器 double fps = cap.get(cv::CAP_PROP_FPS); cv::Size size = cv::Size((int)cap.get(cv::CAP_PROP_FRAME_WIDTH), (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT));
步骤 4: 创建视频写入器
创建一个用于存储转换后的视频的视频写入器:
cv::VideoWriter writer("output.mp4", codec, fps, size, true);
步骤 5: 读取帧并执行转换
遍历视频帧并执行转换。
while (cap.read(frame)) { // 每次读取一帧 cv::cvtColor(frame, grayFrame, cv::COLOR_BGR2GRAY); // 将BGR颜色空间转换为灰度 cv::equalizeHist(grayFrame, equalizedFrame); // 进行直方图均衡化 writer.write(equalizedFrame); // 写入均衡化的灰度图像到视频中 }
步骤 6: 关闭所有资源
关闭所有资源后释放内存。
cap.release(); // 释放视频捕获设备 writer.release(); // 释放视频写入器
步骤 7: 输出MP4文件
通过调用
writer.release()
释放资源,完成整个过程。完整的C/C++程序代码示例:
#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main() { cv::VideoCapture cap("D:/视图/sp/标注使用.mp4"); // 视频输入路径 if (!cap.isOpened()) { std::cerr << "Error opening video stream or file" << std::endl; return -1; } int codec = cv::VideoWriter::fourcc('m', 'p', '4', 'v'); // 默认编码器 double fps = cap.get(cv::CAP_PROP_FPS); cv::Size size = cv::Size((int)cap.get(cv::CAP_PROP_FRAME_WIDTH), (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT)); cv::VideoWriter writer("output.mp4", codec, fps, size, true); // 创建输出视频文件 while (cap.read(frame)) { // 遍历每帧 cv::cvtColor(frame, grayFrame, cv::COLOR_BGR2GRAY); // 将BGR转换为灰度 cv::equalizeHist(grayFrame, equalizedFrame); // 进行直方图均衡化 writer.write(equalizedFrame); // 将结果写入视频 } cap.release(); // 释放摄像头 writer.release(); // 释放视频写入器 return 0; }
这个程序将读取视频、执行转换、并保存为MP4格式。注意,这个例子是基于标准的OpenCV库编写的,可能需要根据你的具体需求进行调整。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题
- ¥50 如何将脑的图像投影到颅骨上