标签:get rgb bsd ret pause bre diff == ram
录频工具转gif


#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "imgproc/imgproc.hpp"
using namespace cv;
int main(int argc, char *argv[])
{
VideoCapture videoCap(0);
if (!videoCap.isOpened())
{
return -1;
}
double videoFPS = videoCap.get(CV_CAP_PROP_FPS); //获取帧率
double videoPause = 1000 / videoFPS;
Mat framePrePre; //上上一帧
Mat framePre; //上一帧
Mat frameNow; //当前帧
Mat frameDet; //运动物体
videoCap >> framePrePre;
videoCap >> framePre;
cvtColor(framePrePre, framePrePre, CV_RGB2GRAY);
cvtColor(framePre, framePre, CV_RGB2GRAY);
int save = 0;
while (true)
{
videoCap >> frameNow;
// if (frameNow.empty() || waitKey() == 27)
if (frameNow.empty() )
{
break;
}
cvtColor(frameNow, frameNow, CV_RGB2GRAY);
Mat Det1;
Mat Det2;
absdiff(framePrePre, framePre, Det1); //帧差1
absdiff(framePre, frameNow, Det2); //帧差2
threshold(Det1, Det1, 0, 255, CV_THRESH_OTSU); //自适应阈值化
threshold(Det2, Det2, 0, 255, CV_THRESH_OTSU);
Mat element = getStructuringElement(0, Size(3, 3)); //膨胀核
dilate(Det1, Det1, element); //膨胀
dilate(Det2, Det2, element);
bitwise_and(Det1, Det2, frameDet);
framePrePre = framePre;
framePre = frameNow;
imshow("Video", frameNow);
imshow("Detection", frameDet);
waitKey(1);
}
return 0;
}
标签:get rgb bsd ret pause bre diff == ram
原文地址:https://www.cnblogs.com/kekeoutlook/p/11638613.html