2017-01-18 7 views
0

における複数カラムマトリックスIは次のようになり、いくつかのデータで働いてこのデータ(列A、B及びC)は、Aのいずれかに格納することができるマルチチャンネルまたはOpenCVのではOpenCVの

//label  A B C 
// 0  1 2 0 
// 1  2 1 1 
// 2  3 0 4 
// 3  4 2 3 
// 4  1 1 1 

シングルチャンネルの5x3マトリクス、または3チャンネルの5x1マトリクスで使用できます。より具体的には、この例ではデータの両方の定義は仕事を行います。

cv::Mat data(5, 3, CV_8UC1); 
cv::Mat data(5, 1, CV_8UC3); 

私の質問です:上記の宣言の一つとされていない他のを選択した理由はありますか?

P.S.:これは一般的な疑いであり、特定の問題に対する質問ではありません。

+1

4つ以上の列を使用できる場合は、最初の方法に従うことをお勧めします。 – Miki

+0

両方の方法のパフォーマンスに違いはありますか? – karl71

+1

いいえ、データは同じ方法でメモリに配置されます。 – Miki

答えて

3

本当にこのデータで何をしたいかによって決まります。
OpenCV操作の中には、単一のピクセル平面上での操作が簡単なものもあれば、マルチチャネル指向のものもあります。

cv::reshape()を使用して表現を簡単に切り替えることはできますが、ほとんどの状況では単一プレーン(C1)が適していると思います。実際には、いずれか1つを選択し、reshape()を使用して同じメモリの別のビューを生成します。