c - OpenCV 中的差异图像

标签 c image-processing opencv

如果我有图像数据 imgAimgB,那么我想按如下方式计算 imgC:

for (int i = 0; i < numPixelsInA; i++) {
    imgC[i] = max(0, imgA[i]-imgB[i]);
}

如果不编写本质上与上面类似的代码,我看不出有什么办法可以在 openCV 中做到这一点。很好奇我是否遗漏了一些东西。

作为对上述内容的警告,imgA 和 imgB 是 OpenCV uchar,因此,要真正使上述工作正常进行,该行必须替换为:

imgC[i] = (uchar) max(0, ((int) imgA[i]) - ((int) imgB[i]));

这就是为什么 OpenCV 实现对我更有吸引力,因为它们可以正确处理这些饱和问题,并且如果/当我们获得 IPP 时,我们可以“免费”获得适当的加速。

最佳答案

使用较新的 C++ 风格 cv::Mat 结构,您可以直接在矩阵上进行简单的算术运算。

cv::Mat A, B, C;
A = getImageA();
B = getImageB();

C = A - B;

或者可以使用减法函数,请参阅 here .

关于c - OpenCV 中的差异图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026840/

相关文章:

c - C 中的 strcmp() 有问题

Python Image.open() 给出 'object has no attribute' 错误

android - 在 OpenCV/Android 上更改分辨率

c++ - 图像稳定

python - 将 python 代码转换为 cython

c++ - cpp程序中system函数的使用

我可以使用相同的指针从不同的 exe 文件调用数据吗?

C - 我如何每 X 秒执行一个方法?

python - PIL : add a text at the bottom middle of image

iphone - 如何在iPhone中转换base64图像的 View ?