/*
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
//VideoCapture capture;
//capture.open("D:/vcprojects/images/video_006.mp4");
VideoCapture capture(0);
if (!capture.isOpened()) {
printf("could not load video data...\n");
return -1;
}
// 获取帧的属性
double fps = capture.get(CAP_PROP_FPS);
printf("FPS : %f", fps);
Size size = Size(capture.get(CAP_PROP_FRAME_WIDTH), capture.get(CAP_PROP_FRAME_HEIGHT));
VideoWriter writer("D:/wv_demo.mp4", CAP_OPENCV_MJPEG, 15.0, size, true);
// create window
Mat frame, gray, binary;
namedWindow("video-demo", WINDOW_AUTOSIZE);
// show each frame and save
vector<Mat> bgr;
while (capture.read(frame)) {
//inRange(frame, Scalar(0, 127, 0), Scalar(127, 255, 127), gray);
//cvtColor(frame, gray, COLOR_BGR2GRAY);
//threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
//bitwise_not(frame, frame);
flip(frame, frame, 1);
imshow("video-demo", frame);
writer.write(frame);
char c = waitKey(100);
if (c == 27) {
break;
}
}
waitKey(0);
return 0;
}
*/
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
VideoCapture capture;
capture.open("D:/b.mp4");
if (!capture.isOpened()) {
printf("could not load video");
return -1;
}
Mat frame;
Mat bsmaskMOG2;
Mat bsmaskKNN;
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
namedWindow("input_video",WINDOW_AUTOSIZE);
namedWindow("MOG2", WINDOW_AUTOSIZE);
Ptr<BackgroundSubtractor>pMOG2 = createBackgroundSubtractorMOG2();
Ptr<BackgroundSubtractor>pKNN = createBackgroundSubtractorKNN();
while (capture.read(frame)) {
imshow("input_video", frame);
pMOG2->apply(frame, bsmaskMOG2);
pKNN->apply(frame, bsmaskKNN);
morphologyEx(bsmaskMOG2, bsmaskMOG2, MORPH_OPEN, kernel, Point(-1, -1));
imshow("MOG2", bsmaskMOG2);
imshow("KNN", bsmaskKNN);
char c = waitKey(100);
if (c == 27) {
break;
}
}
capture.release();
waitKey();
return 0;
}
2021-08-21opencv-BS背景消除建模
最新推荐文章于 2022-09-08 10:56:41 发布