我想在2张灰色图像之间分割图像的一部分(视频流)。
当流开始时,我拍摄图像。然后我制作另一个IplImage但是每个像素的强度都加一个数字。现在我想保留这两张图片之间的所有内容。
我的代码atm
// Get the initial image
depthInit.copyFrom(result.getBufferedImage());
//Create an image where every intensity is 10, which will be added to the initial image.
cvSet(scalarImage,cvScalar(10, 0, 0, 0));
// De init image wordt verhoogt met de hoogte van de laag
cvAdd(depthInit, scalarImage, depthInitLayer2, null);
2个阈值图像是:depthInit和depthInitLayer2
流是变量“result”
现在使用这两个图像来限制流
cvZero(difference);
// Select everything that is greater than the depthInit image
cvCmp(result, depthInit, difference, CV_CMP_GT);
cvZero(difference2);
// Select everything that is smaler than the depthInitLayer2
cvCmp(difference, depthInitLayer2, difference2, CV_CMP_LT);
虽然遗憾的是这不起作用。
我的问题为什么?
提前谢谢
答案 0 :(得分:1)
方法" inrange"通过opencv做的伎俩。在我的情况下(有一些重命名的变量)
cvInRange(result, threshold1, threshold2, difference2);
流中的1个像素的结果(输出):
Stream value (189.0, 0.0, 0.0, 0.0)
threshold1 value (187.0, 0.0, 0.0, 0.0)
threshold2 value (217.0, 0.0, 0.0, 0.0)
After thresholding value (255.0, 0.0, 0.0, 0.0)
这个强度为189的像素位于[217,187]的区间内,所以它得到255(白色)
另一方面,强度为240的像素不在间隔中,因此得到0
Stream value (240.0, 0.0, 0.0, 0.0)
threshold1 value (187.0, 0.0, 0.0, 0.0)
threshold2 value (217.0, 0.0, 0.0, 0.0)
After thresholding value (0.0, 0.0, 0.0, 0.0)