opencv帧差法 C++代码
时间: 2023-07-04 12:18:53 浏览: 134
OpenCV帧差法
5星 · 资源好评率100%
以下是使用OpenCV实现帧差法的C++代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0); //打开摄像头
if (!cap.isOpened())
{
std::cout << "摄像头未连接!" << std::endl;
return -1;
}
Mat frame, grayFrame1, grayFrame2, diffFrame;
namedWindow("Frame", WINDOW_NORMAL);
namedWindow("Diff", WINDOW_NORMAL);
while (true)
{
cap >> frame; //读取当前帧
if (frame.empty())
{
std::cout << "视频结束!" << std::endl;
break;
}
cvtColor(frame, grayFrame1, COLOR_BGR2GRAY); //转为灰度图像
cap >> frame; //读取下一帧
if (frame.empty())
{
std::cout << "视频结束!" << std::endl;
break;
}
cvtColor(frame, grayFrame2, COLOR_BGR2GRAY); //转为灰度图像
absdiff(grayFrame1, grayFrame2, diffFrame); //帧差法
threshold(diffFrame, diffFrame, 50, 255, THRESH_BINARY); //二值化
imshow("Frame", frame);
imshow("Diff", diffFrame);
if (waitKey(30) == 27) //按下ESC键退出
{
break;
}
}
cap.release();
destroyAllWindows();
return 0;
}
```
该代码打开摄像头,读取当前帧和下一帧图像,并对它们进行帧差法处理,最后显示原始帧和处理后的帧。可以通过调整阈值来控制二值化的效果。
阅读全文