2016-04-27 78 views
0

我正在使用OpenCV庫在C++中編寫應用程序。我試圖用矩陣和一些數據類型操作輸出錯誤做簡單的操作。OpenCV數據類型錯誤

例如:

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

我已經發布了減少操作的答案。 Division與CV_32F類型完美配合。請提供[mcve]以查看問題出在哪裏。 – Miki

回答

1

約簡操作需要一個合適的目標類型,否則它們將失敗,以防由於飽和而產生不一致的結果。

如果你正在總結(CV_REDUCE_SUMCV_8U值,你需要一個目標類型大到足以容納的總和,這可以是:CV_32SCV_32FCV_64F。您可以在source code中查看此以及其他組合。