OpenCV学习方框滤波实现图像处理代码示例

 更新时间:2021年10月16日 09:15:56   作者:点云侠  
这篇文章主要为大家介绍了OpenCV学习如何使用方框滤波实现对图像处理代码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

一、方框滤波

   方框滤波是均值滤波的一种形式。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和的均值,而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。

二、C++代码

#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
	//---------------------------用于方框滤波的图像--------------------
	Mat img = imread("1.jpg"); 
	if (img.empty())
	{
		cout << "请确认图像文件名称是否正确" << endl;
		return -1;
	}	
	//将CV_8U类型转换成CV_32F类型,避免计算后的数据过大
	Mat equalImg_32F;
	img.convertTo(equalImg_32F, CV_32F, 1.0 / 255);
	Mat resultNorm, result, equalImg_32FSqr;
	//--------------------------方框滤波boxFilter----------------------
	boxFilter(img, resultNorm, -1, Size(3, 3), Point(-1, -1), true);  // 进行归一化,则为均值滤波
	boxFilter(img, result, -1, Size(3, 3), Point(-1, -1), false);     // 不进行归一化
	//----------------------方框滤波sqrBoxFilter()---------------------
	//对每个像素数值的平方求和/求均值
	sqrBoxFilter(equalImg_32F, equalImg_32FSqr, -1, Size(3, 3), Point(-1, -1), true, BORDER_CONSTANT);
	//-------------------------显示处理结果----------------------------
	imshow("原始图像", img);
	imshow("归一化", resultNorm);
	imshow("不归一化", result);
	imshow("平方和求均值", equalImg_32FSqr);
	waitKey(0);
	return 0;
}

三、python代码

import cv2
import matplotlib.pyplot as plt
# 读取图片
img = cv2.imread('1.jpg')
# BGR转为RGB,方便plot函数显示
source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 方框滤波,True表示归一化,则效果与均值滤波相同。
result = cv2.boxFilter(source, -1, (5, 5), normalize=False)
# sqrBoxFilter实现对每个像素值的平方求和
# result1 = cv2.sqrBoxFilter(source, -1, (5, 5), normalize=True)
# 显示图形
titles = ['Source Image', 'BoxFilter Image']
images = [source, result]
for i in range(2):
    plt.subplot(1, 2, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

四、结果展示

1、原始图像

在这里插入图片描述

2、归一化

在这里插入图片描述

3、不归一化

在这里插入图片描述

4、平方和求均值

在这里插入图片描述

以上就是OpenCV学习方框滤波实现图像处理代码示例的详细内容,更多关于OpenCV方框滤波实现图像处理的资料请关注脚本之家其它相关文章!

相关文章

  • 关于keras中卷积层Conv2D的学习记录

    关于keras中卷积层Conv2D的学习记录

    这篇文章主要介绍了关于keras中卷积层Conv2D的学习记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python使用20行代码实现微信聊天机器人

    Python使用20行代码实现微信聊天机器人

    这篇文章主要介绍了Python使用20行代码实现微信聊天机器人,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python 数据的累加与统计的示例代码

    Python 数据的累加与统计的示例代码

    这篇文章主要介绍了Python 数据的累加与统计的示例代码,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • Python中的数据分组统计、分组运算及透视方式

    Python中的数据分组统计、分组运算及透视方式

    这篇文章主要介绍了Python中的数据分组统计、分组运算及透视方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • python管理包路径之pycharm自动解决包路径注册

    python管理包路径之pycharm自动解决包路径注册

    这篇文章主要介绍了python本管理包路径之pycharm自动解决包路径注册,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • PyTorch中可视化工具的使用

    PyTorch中可视化工具的使用

    本文主要介绍了PyTorch中可视化工具的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python列表字典排序的实现示例

    python列表字典排序的实现示例

    在Python中,对列表字典进行排序是一项常见的任务,本文主要介绍了python列表字典排序的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • python实现简单socket程序在两台电脑之间传输消息的方法

    python实现简单socket程序在两台电脑之间传输消息的方法

    这篇文章主要介绍了python实现简单socket程序在两台电脑之间传输消息的方法,涉及Python操作socket的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Python数据可视化之Matplotlib初级使用指南

    Python数据可视化之Matplotlib初级使用指南

    Matplotlib是Python中最常用的数据可视化库之一,它提供了丰富的图表类型和灵活的自定义选项,能帮助我们以更直观的方式理解数据,本文将对Matplotlib的基本功能进行介绍,包括如何创建和自定义图表等
    2023-07-07
  • Python包装异常处理方法

    Python包装异常处理方法

    这篇文章主要介绍了Python包装异常处理方法,相比java,python的异常和java中不同,python主要是防止程序异常被中止。一旦被catch后它还行往下执行,本文就分享python相关的异常处理方法,需要的小伙伴可以参考一下
    2022-06-06

最新评论