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

最近在学习研究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;
}

处理效果,如下图所示:

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

时间: 2024-11-21 00:26:18

摄像头图像比较的有趣现象的相关文章

java 接口 继承 的有趣现象

public class TestA { private String ta="我是类TestA"; public String fiall() {//System.out.println(this.ta);return ta; }} 上面第一个类,作为父类 -------------------------------------------------------------------------------------------------------------------

使用JavaCV/OpenCV抓取并存储摄像头图像

http://blog.csdn.net/ljsspace/article/details/6702178  分类: 图形图像(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. 本程序通过JFrame实时显示本机摄像头图像,并将图像存储到一个缓冲区,当用户用鼠标点击JFrame中任何区域时,显示抓取图像的简单动画,同时保存缓冲区的图像到磁盘文件中.点击JFrame关闭按钮可以退出程序. 实现: [java] view plain copy import java.awt.Graphi

多媒体编程——ios摄像头图像抓取工具类

工具类提供预览图像画面,自动处理旋转,并且以主动方式抓取图像(这样帧率可以无限大) 系统的接口多是异步接收图像,像我这种强迫症怎么受得了,必须吧被动接收图像的方式改成主动抓取. 头文件 #import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> //这些比例都是4:3的比例. typedef enum TKVideoFrameSize { tkVideoFrame480x360 = 480 <

centos7架设NFS时一个有趣现象

centos7架设NFS时一个有趣现象,就是用netstat查不到nfs的2049端口, 但用rpcinfo就查出来了 原文地址:https://blog.51cto.com/13339010/2433045

在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图

以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy as np from matplotlib import pyplot as plt import time cap  = cv2.VideoCapture(0) for i in range(0, 19):     print(cap.get(i)) while(1):     ret, fram

C#下使用Tensorflow实现摄像头图像的处理

TensorFlow自带例子已经包含了android和ios下的摄像头图像识别,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作摄像头. 代码在这里下载,使用VS2017编译. http://files.cnblogs.com/files/autosoftdev/TensorFlowCamera.zip 运行时,从这里 https://www.nuget.org/api/v2/package/TensorFlowSharp/1.2.2 下载并解压取出l

Javascript里面的一些有趣现象

在结合angularJS进行编程的时候,我们会发现很多有意思的现象,这里想讨论一下这些现象背后的原理: 1. scope -> online/view 2. 闭包, 来看一个简单的例子: var a = 1; function one() { console.log(a); var a = 2; //将变量a 在该当前栈替换为该位置的a, 所有上面使用a时为未定义,后面输出a, 当该堆栈调用结束后,撤销此空间.(此处和C++/C#有区别,强类型不能重复定义相同变量,但Javascript可以,而

用LED矩阵屏 显示网络摄像头图像

介绍 在现代Web浏览器中,JavaScript公开了一些非常强大的特性.其中之一就是webkitGetUserMedia 功能,它可以让你访问一个电脑的webcam(在允许的情况下) 在这个例子中,我们将用Espruino板子来将服务器连接一个可以访问Webcam的页面,并发送一个低像素的图片给Espruino板,然后就可以显示在一个LED矩阵屏上. 你将需要 一个 RGB123 矩阵 - 我用的是16*16的 一个 WIZnet W5500模块 一个带有Webcam的笔记本/平板电脑 连线

Linux USB摄像头驱动【转】

本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑,拿到一个硬件就需要去安装它相对应的驱动程序.有时候稍有不对还会导致电脑崩溃,是不是让人很郁闷?这一章我们讲 USB 摄像头设备驱动,那么是不是支持所有的 USB 摄像头驱动呢?带着这个疑问