1.把一个矩阵从一种数据类型转换到另一种数据类型,同时可以带上缩放因子和增量.
函数原型void Mat::convertTo( Mat& m, int rtype, double alpha=1, double beta=0 )const;
输入参数:
m 目标矩阵。如果m的大小与原矩阵不一样,或者数据类型与参数不匹配,那么在函数convertTo内部会先给m重新分配空间。
rtype 指定从原矩阵进行转换后的数据类型,即目标矩阵m的数据类型(CV_8UC1)。当然,矩阵m的通道数应该与原矩阵一样的。如果rtype是负数,那么m矩阵的数据类型应该与原矩阵一样。
alpha 缩放因子。 如果把灰度图归一化,设为1/255.0,默认值是1。即把原矩阵中的每一个元素都乘以alpha。
beta 增量。默认值是0。即把原矩阵中的每一个元素都乘以alpha,再加上beta。
公式如下:
m(x,y)=saturate_cast(alpha*(*this)(x,y)+beta);
由于有数据类型的转换,所以需要用saturate_cast来处理数据的溢出。
2.定义结构元素。
API:Mat getStructuringElement(int 内核形状,Size 内核尺寸,Point 锚点位置)
注:内核形状可以取方形MORPH_RECT,十字形MORPH_CROSS,椭圆形MORPH_ELLIPSE
锚点位置默认值Point(-1,-1),取形状的中心
膨胀:把二值图像各1像素连接成分的边界扩大一层(填充边缘或0像素内部的孔);
腐蚀:把二值图像各1像素连接成分的边界点去掉从而缩小一层(可提取骨干信息,去掉毛刺,去掉孤立的0像素);
开:先腐蚀再膨胀,可以去掉目标外的孤立点
闭:先膨胀再腐蚀,可以去掉目标内的孔。