0

同じサイズで同じオブジェクトを表しているが、いくつかの光の違いがある一連の画像があります。すべての画像を使用して、これらの違いをピクセルごとに調べたいと思います。多くのチャンネルを持つマルチチャンネル マットとして、それらを 3D 配列にスタックしたいと思います。(x,y) はすべての画像内のピクセルの座標、(x,y,z) は Mat の z 番目のチャネルの (x,y) 点の座標と言えます。

z 方向の値の配列を取得するために、(x,y) 座標を使用して平行六面体にインデックスを付ける方法を探しています。言い換えれば、私は次の方法を探しています:

Mat 3dMat; // previously initialized as a 3d stack of images
std::vector<byte> z_values = 3dMat.z_vec(x,y); // pseudo-code to explain what I'm trying to achieve

何か案が?ご清聴ありがとうございました。

4

1 に答える 1

0

マットに必要なチャネルのサイズ/数を持つデータ型を作成する必要があります。したがって、たとえばOpenCVタイプを使用できます

Mat image(size,CV_8UC3);  // 3 -channel mat
cv::Point3_<uchar> val = image.at<cv::Point3_<uchar> >(row,column);

または、独自のものを作成します。

struct MyType{ uchar x,y,z; };
MyType val = image.at<MyType>(row,column);

ベクトル型を直接使用できるとは思いません。ポインターを使用できますが、これはあなたが望むものではないようです。

于 2013-03-28T22:43:51.393 に答える