引自免费微信小程序:皆我百晓生
要将视频转换为灰度图像并进行直方图均衡化,并将其保存为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库编写的,可能需要根据你的具体需求进行调整。