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

作者:点云侠 时间:2023-02-08 17:17:43 

一、方框滤波

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

二、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、原始图像

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

2、归一化

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

3、不归一化

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

4、平方和求均值

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

来源:https://blog.csdn.net/qq_36686437/article/details/120756451

标签:OpenCV,方框滤波,图像处理
0
投稿

猜你喜欢

  • PHP查询快递信息的方法

    2023-11-14 10:25:48
  • python识别验证码的思路及解决方案

    2022-02-02 16:05:13
  • pandas实现导出数据的四种方式

    2023-01-03 14:57:57
  • IE8 在元素尺寸大于(2048px/4096px)时 alpha滤镜渲染失败

    2010-01-05 16:39:00
  • 如何利用Pytorch计算三角函数

    2021-01-27 11:35:47
  • Python命令行库click的具体使用

    2023-07-05 02:51:16
  • python中使用iterrows()对dataframe进行遍历的实例

    2023-12-29 13:43:02
  • python实现某考试系统生成word试卷

    2022-05-20 18:29:09
  • selenium跳过webdriver检测并模拟登录淘宝

    2023-06-14 18:22:52
  • python 实现多线程的三种方法总结

    2022-10-17 07:09:11
  • 简单的asp采集代码教程

    2011-04-18 10:39:00
  • IE7下动态创建Iframe时,去除边框的办法

    2009-01-19 13:56:00
  • PyQT实现多窗口切换

    2023-04-14 02:40:32
  • Pytorch mask_select 函数的用法详解

    2023-11-20 22:01:40
  • 典型的三行二列居中高度自适应css布局

    2008-02-22 16:02:00
  • python实现udp传输图片功能

    2022-09-24 16:35:01
  • JS设置cookie、读取cookie、删除cookie

    2023-08-27 19:35:17
  • Python+django实现简单的文件上传

    2021-08-15 03:11:25
  • 手把手教你pip配置国内镜像源(最新详尽版)

    2023-05-30 10:19:03
  • python opencv实现图像边缘检测

    2022-08-05 08:40:34
  • asp之家 网络编程 m.aspxhome.com