【碎片知识(5)· 计算机视觉基础】自定义均值滤波器和OpenCV中blur平均滤波函数的对比

本文介绍了OpenCV中Mat类的基础知识,包括Mat类型的说明、初始化方式以及成员函数,如clone、convertTo和at等。此外,文章探讨了自定义均值滤波器与OpenCV提供的blur平均滤波函数的对比,强调了在图像处理中选择适当方法的重要性。
摘要由CSDN通过智能技术生成

本篇的代码会用到关于Mat类的相关知识,开篇先对Mat类进行小结,对其中一些内容仔细推敲的理解可以防止debug中很多棘手问题的出现。

OpenCV中Mat类型的相关说明

OpenCV3中Mat类:

1.1         关于Mat类型的说明(信息来源于OpenCV手册):

OpenCV最早在内存中存放图像的方式为"IplImage"的C语言结构体,这将C语言中对于内存管理的缺点带入了进来,即用户需要为开辟和释放内存负责。于是引入C++中类的概念,即内存的自动管理。

“Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。矩阵头的尺寸是常数值,但矩阵本身的尺寸会依图像的不同而不同,通常比矩阵头的尺寸大数个数量级。因此,当在程序中传递图像并创建拷贝时,大的开销是由矩阵造成的,而不是信息头。

OpenCV是一个图像处理库,囊括了大量的图像处理函数,为了解决问题通常要使用库中的多个函数,因此在函数中传递图像是家常便饭。这意味着这些图像处理算法具有极大的计算量,因此,除非万不得已,不应该拷贝大的图像,因为这会降低程序速度。”

1.2         初始化

1)        Mat image = imread("图像路径”);用于直接读取一幅图像

2)        Mat image(9, 9, CV_8UC3, Scalar(0, 0, 255));这是标准的初始化格式,四个参数分别表示创建矩阵的高(rows)、宽(cols)、数据类型和通道、BGR值

  关于数据类型,很多OpenCV的函数支持的数据深度只有8位和32位,所以使用CV_64F需谨慎,但是vs的编译器又会把float数据自动变成double型。

  第四个参数一次设置各通道元素的值,一般rgb图像的数据类型都为8UC3,这边也需要注意:mat存储图像的通道顺序为BGR,所以上面代码第二行表示把这个9*9,3通道图像的R值都设为255,GB都为0。

CV_8U

8-bit unsigned integers ( 0 ~ 255 )

CV_8S

8-bit signed integers ( -128 ~ 127 )

CV_16U

16-bit unsigned integers ( 0 ~ 65535 )

CV_16S

16-bit signed integers ( -32768 ~ 32767 )

CV_32S

32-bit signed integers ( -2147483648 ~ 2147483647 )

CV_32F

3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值