emgu / opencv 图像补充意外输出

emgu / opencv image complement unexpected output

我不理解 Image.Not 和 Image.AbsDiff 的相互作用。

  1. 加载图像(确定)
  2. 取其补语(OK)
  3. 差异图像 w/itself(OK=全黑)
  4. 与原作的差异补全(????这不应该是全白的吗???)

代码如下:

var i0 = CvInvoke.Imread("myimage.jpg").ToImage<Gray,Byte>();
var not = i0.Not();
var diffself = i0.AbsDiff(i0);
var diffnot = i0.AbsDiff(not);
CvInvoke.Imshow(i0,not,diffself,diffnot);

有人可以解释为什么图像与其补充图像之间的差异是全新图像吗?

愚蠢的问题,我一写就看到了错误

加法是减法的逆运算。 :)

//var diffnot = i0.AbsDiff(not);
var reverse = i0.Add(not);
CvInvoke.Imshow(i0,not,diffself,reverse);