opencv视频二值化处理c++
时间: 2023-09-09 17:13:00 浏览: 73
可以参考以下代码实现opencv视频的二值化处理:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 打开视频文件
VideoCapture cap("test.mp4");
if (!cap.isOpened())
{
cerr << "Error opening video file" << endl;
return -1;
}
// 获取视频的FPS和帧数
double fps = cap.get(CAP_PROP_FPS);
int frameCount = cap.get(CAP_PROP_FRAME_COUNT);
// 创建输出视频文件
VideoWriter outputVideo;
outputVideo.open("output.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, Size(640, 480), false);
// 循环处理每一帧
Mat frame, gray, binary;
while (cap.read(frame))
{
// 转换为灰度图像
cvtColor(frame, gray, COLOR_BGR2GRAY);
// 二值化处理
threshold(gray, binary, 128, 255, THRESH_BINARY);
// 输出二值化后的图像
outputVideo.write(binary);
imshow("Binary Image", binary);
// 等待用户按下ESC键退出
if (waitKey(1) == 27)
break;
}
// 释放资源
cap.release();
outputVideo.release();
destroyAllWindows();
return 0;
}
```
这个代码使用了opencv的VideoCapture和VideoWriter类来读取视频文件和保存处理后的视频文件,使用cvtColor函数将每一帧转换为灰度图像,然后使用threshold函数进行二值化处理。最后使用imshow函数显示二值化后的图像,并等待用户按下ESC键退出程序。