OpenCV学习笔记【4】:一个简单的变换

主要指对视频图像的平滑处理,通过对图像数据与高斯或者其他核函数进行卷积有效地减少图像信息内容。

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

// example_p26.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "cv.h"
#include "highgui.h"

CvCapture* g_capture = NULL;

int _tmain(int argc, _TCHAR* argv[])
{
	cvNamedWindow("Example4_in", CV_WINDOW_AUTOSIZE);
	cvNamedWindow("Example4_out", CV_WINDOW_AUTOSIZE);
	g_capture = cvCreateFileCapture("2.mkv");
	IplImage* frame;
	while(1)
	{
		frame = cvQueryFrame( g_capture );
		if( !frame )
			break;
		cvShowImage("Example4_in", frame);
		IplImage* out = cvCreateImage(cvGetSize( frame ),IPL_DEPTH_8U,3);
		cvSmooth( frame, out, CV_GAUSSIAN, 3, 3);
		cvShowImage("Example4_out", out);
		char c = cvWaitKey(33);
		if( c==27 )
			break;
		//cvReleaseImage( &out );
	}
	cvReleaseCapture( &g_capture );
	cvDestroyWindow("Example4_in");
	cvDestroyWindow("Example4_out");
	return 0;
}

其中while循环中必须要有char c = cvWaitKey(33);这一句,功能是:当前帧被显示后,我们会等待33ms,如果其间用户触发了一个按键,c会被设置成这个按键的ASCII码值,否则,设置成-1.如果用户触发了ESC键(ASCII 27),循环被退出,读入视频停止。否则33ms后继续执行循环。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值