基于OpenCV的差分法检测移动物体源码

// OpenCV45.cpp : 定义控制台应用程序的入口点。
//基于差值法检测移动物体 

#include "stdafx.h"
#include 
#include 
using namespace cv;
using namespace std;

int main()
{
	VideoCapture video(0);
	if (!video.isOpened()) {

		return -1;
	}

	int fps = video.get(CAP_PROP_FPS);
	int width = video.get(CAP_PROP_FRAME_WIDTH);
	int height = video.get(CAP_PROP_FRAME_HEIGHT);
	int num_of_frames = video.get(CAP_PROP_FRAME_COUNT);
	cout << "视频宽度: " << width << "    视频高度: " << height << "     视频频率: " << fps << "    视频总帧数: " << num_of_frames << endl;

	Mat preFrame, preGray;
	video.read(preFrame);
	cvtColor(preFrame, preGray, COLOR_BGR2GRAY);

	GaussianBlur(preGray, preGray, Size(0, 0), 15);

	Mat binary;
	Mat frame, gray;
	Mat k = getStructuringElement(MORPH_RECT, Size(7, 7), Point(-1, -1));

	while (1) {
		if (!video.read(frame)){
			break;
		}
		cvtColor(frame, gray, COLOR_BGR2GRAY);
		GaussianBlur(gray, gray, Size(0, 0), 15);
		absdiff(gray, preGray, binary);

		threshold(binary, binary, 10, 255, THRESH_BINARY | THRESH_OTSU);
		morphologyEx(binary, binary, MORPH_OPEN, k);
		namedWindow("input", WINDOW_NORMAL);
		namedWindow("result", WINDOW_NORMAL);

		imshow("input", frame);
		imshow("result", binary);

		char c = waitKey(5);
		if (c == 27) {
			break;
		}




	}


	waitKey(0);
    return 0;
}

你可能感兴趣的:(C++,图像处理,opencv,计算机视觉,人工智能)