摄像头图像比较的有趣现象

7 篇文章 0 订阅
7 篇文章 0 订阅

最近在学习研究OpenCV,做了个摄像头前后帧的比较效果,发现通过比较后,能发现物体轮廓。


具体算法见下:


//比较两张图片
BOOL COpencvCameraCtrl::DiffTwoPic()
{
	Mat pre_gray;

	cv::namedWindow( "showCamera" );

	cv::namedWindow( _T("jg") );

	while(true)
	{
		//取得图像
		Mat frame, bigFrame;
		vc >> bigFrame;

		if( !bigFrame.data )
		{
			continue;
		}

		//frame = bigFrame( cv::Rect( 330, 200, 100, 70 ) );
		frame = bigFrame;

		cv::imshow( "showCamera", frame );
		
		Mat frame_gray;
		cv::cvtColor( frame, frame_gray, CV_BGR2GRAY  );

		if( !pre_gray.empty() )
		{			
			//比较图像
			Mat abcdiff, erosion_dst;
			cv::absdiff(pre_gray, frame_gray, abcdiff);

			
			//腐蚀操作
			/*
			int erosion_size = 1;
			int erosion_type = MORPH_RECT;

			Mat element = getStructuringElement( erosion_type,
				Size( 2*erosion_size + 1, 2*erosion_size+1 ),
				Point( erosion_size, erosion_size ) );

			/// 腐蚀操作
			erode( abcdiff, erosion_dst, element );
			*/

			//二值化操作
			
			Mat matthre;
			threshold( abcdiff, matthre, 5, 255, 0 );
			

			cv::imshow( _T("jg"), matthre );
			

			int nCount = cv::countNonZero( abcdiff );		
			
			if( nCount > 30 )
			{
				//Beep(5500,150);				
			}	
		}
		//保存图像
		frame_gray.copyTo(pre_gray);	

		cv::waitKey(30);
		
	}

	return TRUE;
}


处理效果,如下图所示:



该效果是未加腐蚀处理的效果,如果添加了腐蚀处理后,整张图片将是黑色。说明看到的轮廓中差异点都是些离散的点,不能直接被引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值