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

Diane ·
更新时间:2024-09-20
· 1140 次阅读

目录

一、方框滤波

二、C++代码

三、python代码

四、结果展示

1、原始图像

2、归一化

3、不归一化

4、平方和求均值

一、方框滤波

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

二、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方框滤波实现图像处理的资料请关注软件开发网其它相关文章!



图像处理 示例 opencv

需要 登录 后方可回复, 如果你还没有账号请 注册新账号