这篇文章主要介绍了C++ 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、平方和求均值
到此这篇关于C++ OpenCV方框滤波的实现的文章就介绍到这了,更多相关OpenCV方框滤波内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:C++实现OpenCV方框滤波的代码
基础教程推荐
猜你喜欢
- 一文带你了解C++中的字符替换方法 2023-07-20
- 如何C++使用模板特化功能 2023-03-05
- C语言 structural body结构体详解用法 2022-12-06
- C++中的atoi 函数简介 2023-01-05
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- 详解c# Emit技术 2023-03-25
- C++详细实现完整图书管理功能 2023-04-04
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C利用语言实现数据结构之队列 2022-11-22
- C/C++编程中const的使用详解 2023-03-26