この 投稿とOpenCVのドキュメントによると、多次元マットの各要素を初期化してアクセスできます。
実際、私は最初にMATLABでコーディングし、次にOpenCVに変換する必要があります。MATLABマトリックスは、a(:、:、3)またはb(:、:、3:5)のようなサブマトリックスアクセスをサポートします。
これはOpenCVで実行できますか?私の知る限り、これは2Dマットで行うことができます。その2Dはどうですか?
Edit01:さらに、多次元マットでは、プロパティの列と行は、マトリックスの3つのサイズを特徴付けるのに十分ではありません。ディメンションが3より大きい場合があります。これらのプロパティを保存するにはどうすればよいですか。
Edit02:
// create a 100x100x100 8-bit array
int sz[] = {100, 100, 100};
Mat bigCube(3, sz, CV_8U, Scalar::all(0));
私はOpenCVMatでのサブマトリックスアクセスのアイデアをあきらめました。おそらく、OpenCVではサポートされていません。ただし、このサンプルコードから、コンストラクターは「sz」から3番目の次元を受け取ります。この3次元が渡されるマットのプロパティはどれですか?おそらくこの場合、rows = 100、cols = 100、その他?? =100OPenCVのドキュメントで迷子になりました
Edit03:OpenCVソースからのMatクラスの追跡mat.hppからEdit02でコンストラクターの定義を見つけました:
inline Mat::Mat(int _dims, const int* _sz, int _type, const Scalar& _s)
: flags(0), dims(0), rows(0), cols(0), data(0), refcount(0),
datastart(0), dataend(0), datalimit(0), allocator(0), size(&rows)
{
create(_dims, _sz, _type);
*this = _s;
}
次の質問は、ここでの「作成」関数がどこでどのように定義されているかです。=> OpenCVでこのマット定義をトレースすると、マットマトリックスで自分の機能を変更/カスタマイズするのに役立つ可能性があります
PS:私の投稿があまりにも乱雑に書かれている場合はすみません!! 私は初心者のプログラマーで、プログラミングの問題を解決しようとしています。私のアプローチが良くないか、十分に正しくない場合、Plzは私を自由に訂正してください。ありがとうございました!!