cv2 ライブラリである Python 用の openCV を使用しています。次の関数を使用して、画像 im_converted のヒストグラムを計算します
hist = cv2.calcHist([im_converted], channels, None, histSize, ranges,hist, 1)
ここで、im_converted は uint8 型の numpy 配列としてロードされます。
hist は float32 型の numpy 配列に強制されているようです。逆投影機能を使用すると問題が発生します。(注: ヒストグラム st np.sum(hist)=1 を正規化します)
backProj = cv2.calcBackProject([im_converted], channels, hist, ranges,scale);
ドキュメントはこちらです。backProj は強制的に uint8 numpy 配列になります。
- スケール=1 の場合、backProj = 0
- scale=255 の場合、backProj はゼロではありませんが、値は非常に小さいです。
私の質問は次のとおりです。タイプ間の違いを考慮して、適用する必要があるスケール係数は何ですか? タイプを変更する方法はありませんか?(注: hist=zeros(histSize, dtype=uint8) を実行しようとしましたが、これは失敗しました。最終的に float32 ヒストグラムが得られました。)