9 OpenCV 视频分析

首页




差值法检测移动物体
对于监控器拍摄的视频是具有一些明显的特征的,比如摄像头不动,视频中的背景环境不变.基于这个特点可以很容易得到视频中哪些区域与原始状态不同,只需要计算当前图像与背景图像之间的差值,进而判断哪些物体是非背景环境.通过计算当前图像与背景图像之间的差值,可以得到哪些区域是背景中不存在的,计算所有帧图像与背景图像的差值,结合时序信息,就可以得到视频中移动物体的运动状态.有时也可以通过计算相邻帧的差值得到移动的物体.

/**
 * @author IYATT-yx
 * @date 2021-2-10
 * @brief 差值法检测移动物体
 */
#include "opencv2/opencv.hpp"
#include 

int main()
{
     
	cv::VideoCapture camera(-1);
	if (!camera.isOpened())
	{
     
		std::cout << "摄像头打开失败" << std::endl;
		exit(EXIT_FAILURE);
	}
	std::cout << "\n视频宽度: " << camera.get(cv::CAP_PROP_FRAME_WIDTH)
				<< " 视频高度: " << camera.get(cv::CAP_PROP_FRAME_HEIGHT)
				<< " 视频帧率: " << camera.get(cv::CAP_PROP_FPS) << std::endl;
	cv::Mat frame, lastFrame;
	camera >> lastFrame;
	cv::cvtColor(lastFrame, lastFrame, cv::COLOR_BGR2GRAY);

	while (camera.read(frame))
	{
     
		cv::cvtColor(frame, frame, cv::COLOR_BGR2GRAY);
		cv::absdiff(frame, lastFrame, lastFrame);
		
		cv::imshow("原图像", frame);
		cv::imshow("处理后", lastFrame);

		if (cv::waitKey(40) == 27)
		{
     
			break;
		}
		frame.copyTo(lastFrame);
	}

	camera.release();
}

9 OpenCV 视频分析_第1张图片

你可能感兴趣的:(9 OpenCV 视频分析)