2

cv::Mat既に作成されたファイルに画像データを割り当てる方法を誰かが知っているかどうか知りたいです。cv::Matコンストラクターには、データの受け渡しをサポートするオーバーロードされたメソッドがあるようvoid*ですが、オブジェクトが既に構築されているとどうすればよいかわかりません (コンストラクターをリコールして を置き換えることなくcv::Mat)。

現在、必要なデータを手動で指しcv::Mat.dataています。に対して同じことをするべきかどうかはわかりませんcv::Mat.datastartcv::Matのデータを再割り当てできるようにするための何らかのヘルパー関数があると思いました。

ありがとう。

4

2 に答える 2

1

ドキュメンテーション:

// constructor for matrix headers pointing to user-allocated data
Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP);
Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP);

データ ポインターは、有効な _size と _type があればどこでも指すことができます。新しいデータのサイズまたはタイプが異なる場合、ヘッダーは無効です。

于 2013-07-02T10:09:38.430 に答える
1

cv::Mat事前に初期化されたものを新しい画像データに再割り当てするだけです。cv::Mat既に作成された に新しいイメージ データを割り当てる正当な方法をいくつか示します。

cv::Mat my_mat = cv::imread("some_image.jpg");
my_mat = cv::imread("another_image.jpg");

cv::Mat second_mat = cv::imread("one_more.jpg");
second_mat = my_mat.clone();
于 2013-07-02T01:47:49.070 に答える