7

私は OpenCV 2.4.2 を使用して(tmpl(32x44), subj(32x44))おり、行と列に沿って 2 つの行列の射影を取得しようとしています。結果マトリックスを次のように初期化しましrowProjectionSubj(subj.rows,1,CV_8UC1)cv::reduce(subj,rowProjectionSubj,1,CV_REDUCE_SUM,-1);

型の不一致について不平を言っているのはなぜですか? 私は型を同じに保ちdtype=-1ましcv::reduceた( .tmplsubjcv::imread("image_path",0)

4

1 に答える 1

5

私は正しくないかもしれませんが、これを見た後:

http://answers.opencv.org/question/3698/cvreduce-gives-unsupported-format-exception/?answer=3701#post-id-3701

少し実験し、「レジスタ数学」と呼ばれる古くからの友人を使用して、2 つの 8 ビット数を加算する場合、合計を格納するために 8+1+1 ビット レジスタを考慮する必要があることに気付きました。 . したがって、reduce の結果はソースよりも大きなスペースを持つ必要があります。つまり、ソースが 8 ビットの符号なしの場合、少なくとも 16 ビットの符号なしまたは符号付きである必要があります。積の計算などに使用する場合は、32ビットにすることもできます...

注: cv::reduce メソッドで宛先タイプを明示的に指定する必要があります。詳細については、openCV リンクをたどってください。

于 2012-11-02T19:30:49.930 に答える