他のOpenCVマトリックスからcv :: Matおよびcv :: UMatにコピーせずにデータを割り当てる

ゴンド

C ++ OpenCV(バージョン3.4.1)でコピーせずにデータ割り当てで立ち往生しています。

次のサンプルコードをご覧ください。

std::cout << "test cv::Mat" << std::endl;
cv::Mat a(2, 2, CV_32FC1, cv::Scalar(1.));
cv::Mat b(2, 2, CV_32FC1, cv::Scalar(5.));
std::cout << "a:" << std::endl << a << std::endl;
std::cout << "b:" << std::endl << b << std::endl;

a.col(0) = b.col(0);
std::cout << "a:" << std::endl << a << std::endl;
std::cout << "b:" << std::endl << b << std::endl;

a.col(0) = b.row(0).t();
std::cout << "a:" << std::endl << a << std::endl;
std::cout << "b:" << std::endl << b << std::endl;

std::cout << "test cv::UMat" << std::endl;
cv::UMat c(2, 2, CV_32FC1, cv::Scalar(1.));
cv::UMat d(2, 2, CV_32FC1, cv::Scalar(5.));
std::cout << "c:" << std::endl << c << std::endl;
std::cout << "d:" << std::endl << d << std::endl;

c.col(0) = d.col(0);
std::cout << "c:" << std::endl << c << std::endl;
std::cout << "d:" << std::endl << d << std::endl;

c.col(0) = d.row(0).t();
std::cout << "c:" << std::endl << c << std::endl;
std::cout << "d:" << std::endl << d << std::endl;

これにより、次の出力が得られます。

test cv::Mat
a:
[1, 1;
1, 1]
b:
[5, 5;
5, 5]
a:
[1, 1;
1, 1]
b:
[5, 5;
5, 5]
a:
[5, 1;
5, 1]
b:
[5, 5;
5, 5]
test cv::UMat
[ INFO:0] Initialize OpenCL runtime...
c:
[1, 1;
1, 1]
d:
[5, 5;
5, 5]
c:
[1, 1;
1, 1]
d:
[5, 5;
5, 5]
c:
[1, 1;
1, 1]
d:
[5, 5;
5, 5]

cv :: Matの場合、なぜ割り当てが機能しa.col(0) = b.col(0); ないのですか?

なぜアサインメントは機能しa.col(0) = b.row(0).t(); ているのですか?

cv :: UMatの場合はなぜ違うのですか?

このすべての背後にある目標は、データをコピーせずに、他の複数のOpenCVマトリックスからcv :: Mat(またはより適切なcv :: UMat)を連結することです(データの量のためにコストがかかる可能性があります)。

これは可能ですか?

wl2776

いいえ、データをコピーせずに複数のOpenCVマトリックスを単一のマトリックスに連結することはできません。

このクラスcv::Matは、データへの単一のポインタのみを保持しているため、複数のメモリ領域を処理することはできません。

そこポインターもありdatastartdataendそしてdatalimit中にcv::Mat、これらは関心領域のサポートのためだけのヘルパーです。これらは、データをコピーせずに、大きくはなく、小さい行列を処理するのに役立ちます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenCV:cv :: Matは、一見有効なデータからマトリックスを作成できません

分類Dev

cv :: multiplyなどのopencv関数をstd :: vector <cv :: Mat>と入力および出力引数として使用できますか?

分類Dev

デストラクタ、コピー、または移動を呼び出さずに(割り当てられた)メモリを初期化する

分類Dev

別の割り当てられたマトリックス内の特定の範囲のcv :: Matヘッダーを作成します

分類Dev

テンプレートのspeicifcコピーctorおよび割り当て操作を許可/無効にする

分類Dev

コピー不可および移動不可のオブジェクトをstd :: mapに割り当てる方法は?

分類Dev

OpenCVおよびOutputArraysまたは(Mat)からのデータの読み取り

分類Dev

動的に割り当てられたデータでcv :: Matを初期化します

分類Dev

openCV cv :: matリリース

分類Dev

「通貨」としてフォーマットされ、ピボットテーブルの生データとしても使用されているセルにアスタリスクを割り当てるにはどうすればよいですか?

分類Dev

OpenCv cv2.arcLength(cnt、True)およびcv2.contourArea(cnt)エラー

分類Dev

cv :: Matの下部を別のcv :: Matにコピーする

分類Dev

バッチスクリプトを使用して、特定のファイルをソースディレクトリからターゲットディレクトリおよびサブディレクトリにコピーします

分類Dev

ボイラープレートコードを使用せずに、パンダシリーズのコンテンツをsqlAlchemyクラスインスタンスに割り当てるにはどうすればよいですか?

分類Dev

C ++コンストラクターを呼び出さずにオブジェクトを割り当てる方法

分類Dev

デフォルトの移動コンストラクター/割り当ておよび削除されたコピーコンストラクター/割り当て

分類Dev

ディレクトリ構造を保持せずにフォルダおよびサブフォルダからファイルをコピーする

分類Dev

!を含むコマンドラインパラメータを割り当てる方法 および&を変数に?

分類Dev

以下のコードで、パフォーマンスメトリックを精度から適合率、再現率、およびその他のメトリックに変更するにはどうすればよいですか?

分類Dev

取得した文字列のコンストラクターから共有メモリへの割り当てをトリガーせずに、ブースト共有メモリベクトルから文字列を取得するにはどうすればよいですか?

分類Dev

UnityのI2ローカリゼーションによってGoogleスプレッドシートからセル(マッピングデータ)を割り当てる方法は?

分類Dev

初期化、コピーコンストラクタおよび割り当て

分類Dev

データフレームの新しい列に値を割り当てると、「データフレームからのスライスのコピーに値を設定しようとしています」というエラーが発生します。

分類Dev

C ++:構築中にマップの値をコピーせずに、キーと値をコンストラクターに渡してマップを作成するにはどうすればよいですか?

分類Dev

OpenCV OpenCL Thread Saftey-デッドロック(cv :: MatをUMatに変更)

分類Dev

cv2.warpAffine()を使用せずに画像を翻訳する方法は?[Python 3およびOpenCV 4.1]

分類Dev

openCV(.release()および= Mat()を使用したMatイメージのリリースは機能しません)

分類Dev

移動およびコピーコンストラクタを壊さずに仮想デストラクタを宣言する方法

分類Dev

あまり多くのリクエストを送信せずに、フロントエンドをマウスでクリックするたびにデータベースを更新するにはどうすればよいですか?

Related 関連記事

  1. 1

    OpenCV:cv :: Matは、一見有効なデータからマトリックスを作成できません

  2. 2

    cv :: multiplyなどのopencv関数をstd :: vector <cv :: Mat>と入力および出力引数として使用できますか?

  3. 3

    デストラクタ、コピー、または移動を呼び出さずに(割り当てられた)メモリを初期化する

  4. 4

    別の割り当てられたマトリックス内の特定の範囲のcv :: Matヘッダーを作成します

  5. 5

    テンプレートのspeicifcコピーctorおよび割り当て操作を許可/無効にする

  6. 6

    コピー不可および移動不可のオブジェクトをstd :: mapに割り当てる方法は?

  7. 7

    OpenCVおよびOutputArraysまたは(Mat)からのデータの読み取り

  8. 8

    動的に割り当てられたデータでcv :: Matを初期化します

  9. 9

    openCV cv :: matリリース

  10. 10

    「通貨」としてフォーマットされ、ピボットテーブルの生データとしても使用されているセルにアスタリスクを割り当てるにはどうすればよいですか?

  11. 11

    OpenCv cv2.arcLength(cnt、True)およびcv2.contourArea(cnt)エラー

  12. 12

    cv :: Matの下部を別のcv :: Matにコピーする

  13. 13

    バッチスクリプトを使用して、特定のファイルをソースディレクトリからターゲットディレクトリおよびサブディレクトリにコピーします

  14. 14

    ボイラープレートコードを使用せずに、パンダシリーズのコンテンツをsqlAlchemyクラスインスタンスに割り当てるにはどうすればよいですか?

  15. 15

    C ++コンストラクターを呼び出さずにオブジェクトを割り当てる方法

  16. 16

    デフォルトの移動コンストラクター/割り当ておよび削除されたコピーコンストラクター/割り当て

  17. 17

    ディレクトリ構造を保持せずにフォルダおよびサブフォルダからファイルをコピーする

  18. 18

    !を含むコマンドラインパラメータを割り当てる方法 および&を変数に?

  19. 19

    以下のコードで、パフォーマンスメトリックを精度から適合率、再現率、およびその他のメトリックに変更するにはどうすればよいですか?

  20. 20

    取得した文字列のコンストラクターから共有メモリへの割り当てをトリガーせずに、ブースト共有メモリベクトルから文字列を取得するにはどうすればよいですか?

  21. 21

    UnityのI2ローカリゼーションによってGoogleスプレッドシートからセル(マッピングデータ)を割り当てる方法は?

  22. 22

    初期化、コピーコンストラクタおよび割り当て

  23. 23

    データフレームの新しい列に値を割り当てると、「データフレームからのスライスのコピーに値を設定しようとしています」というエラーが発生します。

  24. 24

    C ++:構築中にマップの値をコピーせずに、キーと値をコンストラクターに渡してマップを作成するにはどうすればよいですか?

  25. 25

    OpenCV OpenCL Thread Saftey-デッドロック(cv :: MatをUMatに変更)

  26. 26

    cv2.warpAffine()を使用せずに画像を翻訳する方法は?[Python 3およびOpenCV 4.1]

  27. 27

    openCV(.release()および= Mat()を使用したMatイメージのリリースは機能しません)

  28. 28

    移動およびコピーコンストラクタを壊さずに仮想デストラクタを宣言する方法

  29. 29

    あまり多くのリクエストを送信せずに、フロントエンドをマウスでクリックするたびにデータベースを更新するにはどうすればよいですか?

ホットタグ

アーカイブ