1

これまで、merge()特定のチャネルを送信元から宛先にコピーするオプションであることを理解しましたが、これを実装する方法を完全には理解していないようです。

私のサンプルコード:

Mat_<float> my_grayscale_image = load_image(some_image, CV_LOAD_IMAGE_GRAYSCALE);
Mat_<Vec2f> my_grayscale_2chan;

したがって、基本的には、グレー画像my_grayscale_imageを新しい2チャンネル画像の最初のチャンネルにコピーしたいと思いますmy_grayscale_2chan

誰かが私を正しい方向に向けてくれることを願っています、ありがとう。

4

2 に答える 2

1

cv::merge複数のMatオブジェクトを1つのMatに結合するために使用されます。たとえばMat_<Vec2f>、2から作成できます。Mat_<float>

Mat_<float> first, second;
Mat_<Vec2f> result;
Mat tmp[] = { first, second };
merge(tmp, sizeof(tmp)/sizeof(Mat), result);

チャネルを既存のMatオブジェクトにコピーするには、ユニバーサルmixChannels関数を使用できます。または、あなたのケースの文書化されていない速記があります:

//void cv::insertChannel(InputArray _src, InputOutputArray _dst, int coi)
insertChannel(my_grayscale_image, my_grayscale_2chan, 0);
于 2012-09-22T10:43:33.373 に答える
0

次のことを試すことができます...

cvMerge(my_grayscale_image,NULL,NULL,NULL,my_grayscale_2chan)..
于 2012-09-22T10:03:52.990 に答える