}
注意: Rect类型可以直接通过Rect.tl() Rect.br() 获取矩形的左上角、右下角坐标
查看源码的定义:! the top-left corner
//Point_<_Tp> tl() const;
//! the bottom-right corner
//Point_<_Tp> br() const;
2.随机颜色: RNG g_rng(12345);
cv::rectangle(img,box.tl(),box.br(),cv::Scalar(g_rng.uniform(0, 255), g_rng.uniform(0,255), g_rng.uniform(0,255)));//随机颜色
查看RNG源码:
/! returns uniformly distributed double-precision floating-point random number from [a,b) range
//double uniform(double a, double b);
3.深度复制MAT
(1)Mat srcImage(600, 800,CV_8UC3), tempImage;
srcImage.copyTo(tempImage);
(2)Mat tempImage=srcImage.clone()
4.定义ROI区域
Mat image=imread("~~~~");
Mat imageROI=image(Rect(300,230,logo.cols,logo.rows));
5. convertScaleAbs
使用线性变换转换输入数组元素成8位无符号整型。 convertScaleAbs( normImage, scaledImage );//将归一化后的图线性变换成8位无符号整型
函数原型:
void normalize(InputArray src,OutputArray dst, double alpha=1, doublebeta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )
该函数归一化输入数组使它的范数或者数值范围在一定的范围内。
Parameters:
src
输入数组
dst
输出数组,支持原地运算
alpha
range normalization模式的最小值
beta
range normalization模式的最大值,不用于norm normalization(范数归一化)模式。
normType
归一化的类型,可以有以下的取值:
NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。
NORM_INF: 此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)
NORM_L1 : 归一化数组的L1-范数(绝对值的和)
NORM_L2: 归一化数组的(欧几里德)L2-范数
dtype
dtype为负数时,输出数组的type与输入数组的type相同;
否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).
mask
操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。
1、线性函数转换,表达式如下:(对应NORM_MINMAX)
ifmask(i,j)!=0
dst(i,j)=(src(i,j)-min(src))*(b‘-a‘)/(max(src)-min(src))+ a‘
else
dst(i,j)=src(i,j)
其中b‘=MAX(a,b), a‘=MIN(a,b);
2. 当norm_type!=CV_MINMAX:
ifmask(i,j)!=0
dst(i,j)=src(i,j)*a/norm (src,norm_type,mask)
else
dst(i,j)=src(i,j)
其中,函数norm的功能是计算norm(范数)的绝对值
Thefunctions norm calculate an absolute norm of src1 (when there is no src2 ):