温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++如何实现OpenCV方框滤波效果

发布时间:2022-03-03 15:01:01 来源:亿速云 阅读:175 作者:小新 栏目:开发技术

这篇文章将为大家详细讲解有关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、原始图像

C++如何实现OpenCV方框滤波效果

2、归一化

C++如何实现OpenCV方框滤波效果

3、不归一化

C++如何实现OpenCV方框滤波效果

4、平方和求均值

C++如何实现OpenCV方框滤波效果

关于“C++如何实现OpenCV方框滤波效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI