在EmguCV中的图像之间相乘操作

时间:2013-03-15 19:55:21

标签: c# emgucv

我希望知道EmguCV是否允许一种简单有效的方法在MATLAB中完成以下行:

C = A .* B

(假设A,B和C是表示具有相同尺寸和类型的灰度图像的矩阵)。

假设我想在上面进行相同的操作,但是使用EmguCV的两个Image<Gray, byte>个对象,问题是:有没有办法将具有相同尺寸的点两个图像相乘? /强>

1 个答案:

答案 0 :(得分:3)

我解决了这个问题。假设我们有三个灰度图像,以这种方式定义:

//We can use, for example, two files with the same dimensions, e.g. 100x100
Image<Gray, byte> A = new Image<Gray, byte>("imgA_100x100.jpg");
Image<Gray, byte> B = new Image<Gray, byte>("imgB_100x100.jpg");

//The image C will be the result of point-by-point multiplication
//We need to initialize it
Image<Gray, byte> C = new Image<Gray, byte>(A.Width, A.Height);

为了执行乘法,您只需使用以下代码:

CvInvoke.cvMul(A.Ptr, B.Ptr, C.Ptr, scale);

上面一行逐点执行乘法,我用一个称为scale的比例因子。使用伪代码来解释上面的代码含义,我们可以这样说:

C[i, j] = A[i, j] * B[i, j] * scale