我正在使用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,因为它会大大减慢我的程序。
答案 0 :(得分:1)
减少操作需要一个合适的目标类型,否则它们会因为饱和而产生不一致的结果而失败。
如果要汇总(CV_REDUCE_SUM
)CV_8U
个值,则需要一个足够大的目标类型来包含总和,其中包括:CV_32S
,CV_32F
或{ {1}}。
您可以在source code。
中查看此内容以及其他组合