#core 模块. 核心功能
##Mat - 基本图像容器
1.拷贝指针:
Mat B(A);
C = A;
Mat D (A, Rect(10, 10, 100, 100) ); // using a rectangle
Mat E = A(Range:all(), Range(1,3)); // using row and column boundaries
整体拷贝:
Mat F = A.clone();
Mat G;
A.copyTo(G);
##OpenCV如何扫描图像、利用查找表和计时
LUT:
Mat lookUpTable(1, 256, CV_8U);
uchar* p = lookUpTable.data;
for( int i = 0; i < 256; ++i)
p[i] = table[i];
table[]即为0~255对应的变换关系
然后我们调用函数 (I 是输入 J 是输出):
LUT(I, lookUpTable, J);
##矩阵的掩码操作
filter2D函数
滤波器在图像处理中的应用太广泛了,因此OpenCV也有个用到了滤波器掩码(某些场合也称作核)的函数。不过想使用这个函数,你必须先定义一个表示掩码的 Mat 对象:
Mat kern = (Mat_(3,3) << 0, -1, 0,
-1, 5, -1,
0, -1, 0);
然后调用 filter2D 函数,参数包括输入、输出图像以及用到的核:
filter2D(I, K, I.depth(), kern );
##使用OpenCV对两幅图像求和(求混合(blending))
现在我们生成图像 g(x) .为此目的,使用函数 addWeighted 可以很方便地实现:
beta = ( 1.0 - alpha );
addWeighted( src1, alpha, src2, beta, 0.0, dst);
这是因为 addWeighted 进行如下计算
dst = alpha* src1 + beta* src2 + gamma
这里 gamma 对应于上面代码中被设为 0.0 的参数。