帧间差分

xiaoxiao2021-02-28  79

#include "core/core.hpp" #include "highgui/highgui.hpp" #include "imgproc/imgproc.hpp" using namespace cv; int main() { VideoCapture videoCap("C:/Users/Administrator/Desktop/final.avi"); Mat framePre; //上一帧 Mat frameNow; //当前帧 Mat frameDet; //运动物体 videoCap >> framePre; cvtColor(framePre, framePre, CV_BGR2GRAY); while (true) { videoCap >> frameNow; if (frameNow.empty()) { break; } cvtColor(frameNow, frameNow, CV_RGB2GRAY); absdiff(frameNow, framePre, frameDet); framePre = frameNow; imshow("Video", frameNow); imshow("Detection", frameDet); waitKey(1); } return 0; } #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; int main() { VideoCapture capture("C:\\Users\\aoe\\Desktop\\avi\\walk.avi");//获取视频 if (!capture.isOpened()) return -1; double rate = capture.get(CV_CAP_PROP_FPS);//获取视频帧率 int delay = 1000 / rate; Mat framepro, frame, dframe; bool flag = false; namedWindow("image"); namedWindow("test"); while (capture.read(frame)) { if (false == flag) { framepro = frame.clone();//将第一帧图像拷贝给framePro flag = true; } else { absdiff(frame, framepro, dframe);//帧间差分计算两幅图像各个通道的相对应元素的差的绝对值。 framepro = frame.clone();//将当前帧拷贝给framepro threshold(dframe, dframe, 80, 255, CV_THRESH_BINARY);//阈值分割 imshow("image", frame); imshow("test", dframe); waitKey(delay); } } waitKey(); return 0; }

转载请注明原文地址: https://www.6miu.com/read-27606.html

最新回复(0)