c++ - OpenCV 数据类型错误

标签 c++ opencv

我正在使用 OpenCV 库用 C++ 编写应用程序。我正在尝试对矩阵进行简单操作,并对某些数据类型操作输出错误。

例如:

reduce(img, img, 0, CV_REDUCE_SUM, CV_8U); //does not work if img contains CV_8U
reduce(img, img, 0, CV_REDUCE_SUM, CV_64F); //does work if img contains CV_8U

如果尝试简单的按元素划分:

Mat A = B / C; //generates data type assertion error if B and C are CV_32F

但如果 B 和 C 是 CV_64F,则有效。

非常感谢您的帮助。不想使用 CV_64F,因为它会显着降低我的程序速度。

最佳答案

缩减操作需要合适的目标类型,否则它们会失败,因为它们可能会因饱和而产生不一致的结果。

如果要对 (CV_REDUCE_SUM) CV_8U 值求和,则需要一个足够大的目标类型来包含总和,它是:CV_32SCV_32FCV_64F

您可以检查这个,以及 source code 中的其他组合.

关于c++ - OpenCV 数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888462/

相关文章:

image - 为什么opencv cvtColor会修改图像大小?

c++ - 函数外的全局静态变量不是 "staying defined"

c++ - 为什么程序不返回 YYText() 或 YYLeng()?

c++ - 了解单例模式中的操作重载

c++ - 为什么对于此 C++ 程序中的相同输入会给出两个不同的结果

python - OpenCV/ python : Fast way to match a picture with a database

c++ - 函数打印奇怪的值。 C++

android - 无法在 Android 中使用 OpenCV VideoCpature java 类打开视频文件

python - 如何在 python numpy 中从周围的白色背景中裁剪对象?

opencv - 相机标定体积