当前位置: 首页 > news >正文

cv2.sqrBoxFilter 是 OpenCV 中用于计算像素邻域平方和的盒式滤波函数

cv2.sqrBoxFilter 是 OpenCV 中用于计算像素邻域平方和的盒式滤波函数

代码

# -*- coding:utf-8 -*-importcv2 as cvimportnumpy as npimportsysif__name__=='__main__':# 读取图像并判断是否读取成功img=cv.imread('./images/eq.png', cv.IMREAD_ANYDEPTH)ifimg is None: print('Failed to read eq.png.')sys.exit()# 验证方框滤波算法的数组矩阵points=np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]],dtype='float32')# 将图像转为float32类型的数据img_32=img.astype('float32')print("img_orign=.{}".format(img))img_32 /=255.0print("img_32=.{}".format(img_32))# 方框滤波cv.boxFilter()和cv.sqrBoxFilter()# 进行归一化img_box_norm=cv.boxFilter(img, -1,(3,3),anchor=(-1, -1),normalize=True)# 不进行归一化img_box=cv.boxFilter(img, -1,(3,3),anchor=(-1, -1),normalize=False)# 进行归一化points_sqr_norm=cv.sqrBoxFilter(points, -1,(3,3),anchor=(-1, -1),normalize=True,borderType=cv.BORDER_CONSTANT)img_sqr_norm=cv.sqrBoxFilter(img, -1,(3,3),anchor=(-1, -1),normalize=True,borderType=cv.BORDER_CONSTANT)# 不进行归一化points_sqr=cv.sqrBoxFilter(points, -1,(3,3),anchor=(-1, -1),normalize=False,borderType=cv.BORDER_CONSTANT)print("points_sqr=.{}".format(points_sqr))# 展示图像处理结果cv.imshow('Result(cv.boxFilter() NORM)', img_box_norm)cv.imshow('Result(cv.boxFilter()', img_box)cv.imshow('Result(cv.sqrBoxFilter() NORM', img_sqr_norm / np.max(img_sqr_norm))cv.imshow('Result(cv.sqrBoxFilter()', points_sqr / np.max(points_sqr))cv.waitKey(0)cv.destroyAllWindows()

cv2.sqrBoxFilter 是 OpenCV 中用于计算像素邻域平方和的盒式滤波函数,核心作用是快速统计图像局部区域的像素值平方和,常作为方差滤波、边缘检测、图像梯度计算等高级操作的基础(例如推导局部方差、标准差)。

函数基本语法

cv2.sqrBoxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)


返回值
返回与输入图像尺寸、通道数一致的输出图像(ndarray 格式),像素值为对应邻域的平方和(或归一化后的平方均值)。

核心原理


标准差图像中,亮区表示局部像素值波动大(边缘 / 纹理),暗区表示像素值均匀(平滑区域)。

关键注意事项

数据类型与溢出问题

输入为 uint8(0-255)时,像素平方最大值为 255²=65025,若核尺寸为 5×5,平方和最大值为 25×65025=1,625,625,远超 uint8 范围(0-255);
必须将 ddepth 设为 cv2.CV_32F/cv2.CV_64F,否则会导致值截断、结果错误。

与 cv2.boxFilter 的区别

边缘填充方式

默认 cv2.BORDER_DEFAULT(镜像填充)适合大多数场景;若需边缘用固定值填充(如黑色),可指定 borderType=cv2.BORDER_CONSTANT:
sqr_sum = cv2.sqrBoxFilter(img_float, cv2.CV_32F, (3,3), borderType=cv2.BORDER_CONSTANT)

非正方形核

核尺寸支持矩形(如 (7,3)),适用于定向统计(如水平方向平方和):

# 3(宽)×7(高)核,侧重水平方向的平方和统计sqr_sum_rect=cv2.sqrBoxFilter(img_float, cv2.CV_32F,(3,7))
http://www.cnnetsun.cn/news/137382.html

相关文章:

  • 正反向代理:网络安全核心技术
  • 别被忽悠了!一文讲透MES管理系统本地部署与SaaS模式的真正底牌
  • 【毕业设计】基于springboot+微信小程序的羽球快讯爱好者平台小程序(源码+文档+远程调试,全bao定制等)
  • 小程序计算机毕设之基于SpringBoot的宠物领养微信小程序基于springboot+微信小程序的宠物领养系统小程序(完整前后端代码+说明文档+LW,调试定制等)
  • 小程序计算机毕设之基于springboot+微信小程序的大学生餐厅点餐系统小程序基于springboot微信小程序的校园食堂订餐服务系统(完整前后端代码+说明文档+LW,调试定制等)
  • 计算机小程序毕设实战-基于springboot+微信小程序的影院售票系统设计与实现基于SpringBoot的电影购票平台微信小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机小程序毕设实战-基于springboot+微信小程序的羽球快讯爱好者平台小程序羽毛球场预定app_羽毛球预约管家【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 11、文本与盒子属性的CSS技巧解析
  • 23、WinJS控件样式与样式规则定位指南
  • 27、Windows 8 应用开发中的 SVG 样式设计
  • SAP ABAP拆分交货单数量、批次、存储地点 并过账
  • 基于MPC的智能车运动预测和控制算法 Motion predication; Kinemati...
  • Mathcad的野路子】11kW PFC参数计算书实战拆解
  • STM32学习笔记CAN
  • 搭建你的第一个“私有知识库” (RAG)
  • 13、Unix 系统磁盘管理与安全定位脚本实用指南
  • 15、系统管理脚本实用指南
  • 怎么选一款适合大面积清洁的多功能全自动洗地机呢?
  • 使用matlab编写m脚本,编写无迹卡尔曼滤波算法(UKF)估计电池SOC,注释清晰
  • 教培行业新媒体运营困境凸显!这款软件或成转型制胜法宝?
  • Photoshop Neural Filters:把“引擎截图”秒变“电影级美宣”?AI 深度模糊与色彩迁移工作流
  • 基于matlab的多目标优化算法NSGA3,动态输出优化过程,得到最终的多目标优化结果。 数据...
  • 12.18
  • COCO 数据集
  • 国内好用的测试用例管理工具有哪些?
  • 24、COM+ 事务管理与补偿资源管理器详解
  • YOLO深度学习模型的训练参数配置与优化
  • 数字孪生可视化模板怎么用?5大行业Demo拆解,帮你快速复用提效
  • 必藏!程序员转型AI大模型:机遇、路径与成功率拆解
  • 《智构空间:AIOS 与全时域 3D 交互范式》第 0 篇:前言 —— 触摸语义的厚度