我正在使用 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_32S
、CV_32F
或 CV_64F
。
您可以检查这个,以及 source code 中的其他组合.
关于c++ - OpenCV 数据类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888462/