我正在寻找一种在EmguCV中执行逐像素求和和减法的优雅方法。
我正在尝试计算图像的Haar特征。 对于一维情况,它是通过将向量[x x x x x x x x]乘以下面的向量元素来完成的:
[ 1 -1 1 -1 1 -1 1 -1]
[ 1 1 -1 -1 1 1 -1 -1]
[ 1 1 1 1 -1 -1 -1 -1]
所以我需要添加或减去图像的元素像素。
说,
Bgr sum = new Bgr();
sum = sum + img[0,0] - img[0,1] + img[0,2] - img[0,3];
显然这不会编译,因为Bgr类中没有运算符“+”。我要通过指定每个B,G,R值来创建一个新的Bgr,这很难看。
有关执行优雅像素操作的想法吗?
答案 0 :(得分:2)
如果您首先翻转要减去的像素的符号,则可以使用img.GetSum()
。您可以通过在适当的位置将图像元素与由1
和-1
组成的矩阵相乘来实现这一点。