2016-04-27 10 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

私は、削減操作の回答を掲載しました。ディビジョンはCV_32Fタイプで完璧に動作します。問題がどこにあるかを確認するには[mcve]を入力してください。 – Miki

答えて

1

削減操作には適切な宛先タイプが必要です。そうでないと、飽和によって一貫性のない結果が生じる可能性があるため、失敗します。

あなたは(CV_REDUCE_SUMCV_8U値を合計している場合は、あなたがいるの和を格納するのに十分な大き宛先タイプを、必要とする次のいずれかCV_32SCV_32FまたはCV_64F

これは、source codeの他の組み合わせと同様に確認できます。