【Opencv3学习笔记 4】图像操作方法学习(C++源代码实现)

本文介绍了线性滤波中的方框滤波、均值滤波和高斯滤波,以及非线性滤波的中值滤波和双边滤波。接着探讨了形态学滤波的膨胀、腐蚀、开闭运算和梯度,还包括漫水填充技术。最后涉及图像金字塔和resize函数,以及阈值化的方法。


所谓的图像处理方法,就是把图像以真正意义上的“ 图像”来进行处理,而不是作为抽象的数组意义。
我们使用图像结构与形态学中所定义的高层处理方法来完成特殊任务,比如滤波、腐蚀、膨胀等等操作。

1. 线性滤波

图像滤波的目的有两个:

  1. 抽出对象的特征作为图像识别的特征模式
  2. 消除噪音

要求也有两个:

  1. 不能损害原图的轮廓及边缘等重要信息
  2. 使得视觉效果好

几种常见的线性滤波器:

  • 低通滤波器:只允许低频率通过
  • 高通滤波器:只允许高频率通过
  • 带通滤波器:允许一定范围
  • 带阻滤波器:不允许一定范围
  • 全通滤波器:允许所有,仅改变相位关系
  • 陷滤波器:组织一个狭窄范围通过

大多数情况下我们可以认为:低通就是模糊,高通就是锐化

方框滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
   
    
	// 载入原图
	Mat image=imread("1.jpg"); 

	//创建窗口
	namedWindow( "方框滤波【原图】" ); 
	namedWindow( "方框滤波【效果图】"); 

	//显示原图
	imshow( "方框滤波【原图】", image ); 

	//进行方框滤波操作
	Mat out; 
	boxFilter( image, out, -1,Size(5, 5)); 

	//显示效果图
	imshow( "方框滤波【效果图】" ,out ); 

	waitKey( 0 );     
} 

在这里插入图片描述

均值滤波

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//		描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
   
    
	//【1】载入原始图
	Mat srcImage=imread("1.jpg"); 

	//【2】显示原始图
	imshow( "均值滤波【原图】", srcImage ); 

	//【3】进行均值滤波操作
	Mat dstImage; 
	blur( srcImage, dstImage, Size(7, 7)); 

	//【4】显示效果图
	imshow( "均值滤波【效果图】" ,dstImage ); 

	waitKey( 0 );     
} 

在这里插入图片描述

高斯滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
using namespace cv; 

//-----------------------------------【main( )函数】--------------------------------------------
//	描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
   
    
	// 载入原图
	Mat image=imread("1.jpg"); 

	//创建窗口
	namedWindow( "高斯滤波【原图】" ); 
	namedWindow( "高斯滤波【效果图】"); 

	//显示原图
	imshow( "高斯滤波【原图】", image ); 

	//进行高斯滤波操作
	Mat out; 
	GaussianBlur( image, out, Size( 5, 5 ), 0, 0 ); 

	//显示效果图
	imshow( "高斯滤波【效果图】" ,out ); 

	waitKey( 0 );     
} 

在这里插入图片描述

2. 非线性滤波

非线性滤波,如中值滤波器(对椒盐噪点有更好的清除作用)有时能达到更好的效果

中值滤波

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 

//-----------------------------------【命名空间声明部分】---------------------------------------
//	描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值