8 ビット イメージと 16 ビット イメージの両方を処理できるようにするコードがいくつかあります。
現在のコードとの唯一の違いは、8 ビット コードでは次を使用することです。
filename.at<uchar>(i, j)
16 ビット コードでは次を使用します。
filename.at<ushort>(i, j)
最も簡単な方法は、画像の種類をチェックする if ステートメントを一番上に含めることです。その後、同じことを行うコードのブロックが 2 つだけになりますが、メンテナンスが面倒になるので、これは避けたいと思います。
まず、OpenCV のドキュメントを読みましたが、見落としている可能性がありますが、Mat オブジェクトがピクセル データを格納するために使用するデータ型を返すものは見当たりませんでした。だから、もしそれを逃したらばかげた気分になるだろうが、それが最善だろう.
私が調べた他のオプションは関数ポインターでしたが、.at テンプレート関数に対してこれを実行できるかどうかはわかりません。
これらのオプションに関するアドバイスは大歓迎です。