c/c++语言开发共享C++实现OpenCV方框滤波的代码

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


一、方框滤波

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

二、c++代码

  #include <iostream>  #include <opencv2opencv.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方框滤波的实现的文章就介绍到这了,更多相关opencv方框滤波内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享C++实现OpenCV方框滤波的代码,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/841567.html

(0)
上一篇 2021年10月16日
下一篇 2021年10月16日

精彩推荐