2017-01-19 13 views
1

OpenCV(> = 2)で画像を変換する方法は、のソースタイプを知る必要はありませんか?私はcvtColorがあることを認識しますが、変換コードを指定する必要があります。これは、それぞれスイッチブロックを作成する必要がありますが、これは本当に面倒です。そのようなもののためにヘルパー機能がないと私は驚いています。OpenCV cvtColor

おかげ

+1

どのようにA、Bが何であるか知らずにAをBに変換できますか?実際に何を達成しようとしていますか? – Miki

+0

どのようにスイッチブロックを作成しますか?通常、あなたは入力タイプを知っているか(スイッチブロックを作ることができます)、そうでないと(スイッチブロックさえできません) – Micka

+0

私はカメラデータを処理するためのジェネリッククラスを構築しています。異なる入力、例えばRGBまたはグレースケールで、16ビットまたは8ビットのいずれかである。たとえば、グレースケールデータが必要な場合(OpenCV関数は8ビットのシングルチャンネルデータでしか動作しないため)、チャンネル数に基づいて決定し、cvtColorを呼び出すか、すでにグレースケールになっている場合にデータをコピーする必要があります。それから、もう8ビットでもう一度変換したら、もう一度チェックしなければなりません。これは頻繁につまずくものであり、手で各事件を処理するのは面倒です。 – iko79

答えて

1

OpenCVのcv::Matは形式や画像データが表す色空間(深さおよびチャネル・カウントのようなメモリ記憶装置に関連する唯一のもの)を記憶していません。

したがって、この情報は外部であり、ユーザーが管理する必要があります。
管理者は、別の色空間に変換する場合は、元の色空間と目標色空間の両方を知って指定する必要があることも意味します。

+0

待って、どのようにimwriteやimshowのような関数は、データの解釈方法を決定するのですか? – iko79

+0

* * 'C1'はグレースケールで、' C3'は 'BGR'です。 –

関連する問題