[32/64bit] 指定された行列行に対する行列ヘッダを作成します.
core_Mat_row p1,p2,p3
p1 = sptr : IntPtr self p2 = int : int y p3 = var : out IntPtr returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
このメソッドは,指定された行列の行に対する新しいヘッダを作成し,それを返します.これは,行列のサイズに関わらず,O(1) の処理です.新しい行列の基礎データは,元の行列と共有されます.以下は,LU やその他多くのアルゴリズムで利用される,古典的な基本行列処理の 1 つである axpy の例です:inline void matrix_axpy(Mat& A, int i, int j, double alpha){ A.row(i) += A.row(j)*alpha;}fragmentNote現在の実装では,以下のコードは期待通りに動作しません.Mat A;...A.row(i) = A.row(j); // うまくいきません. これは,A.row(i) が一時的なヘッダを形成し,さらに別のヘッダに割り当てられるために起こります.これらの操作はそれぞれO(1)、つまりデータはコピーされないことを覚えておいてください。したがって,j番目の行がi番目の行にコピーされることを期待していたかもしれない場合には,上記の割り当ては真ではありません.これを実現するには,この単純な代入を式に変えるか, Mat::copyTo メソッドを利用する必要があります.A.row(j) = A.row(j) + 0;// これは少し長いですが,推奨される方法です.A.row(j).copyTo(A.row(i));例: samples/cpp/pca.cpp,samples/cpp/train_HOG.cpp. 元関数名(C#): core_Mat_row 元DLLエクスポート名: core_Mat_row 参照元CSファイル: Internal\PInvoke\NativeMethods\core\NativeMethods_core_Mat.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) core_Mat_row(cv::Mat *self, int y, cv::Mat **returnValue) { BEGIN_WRAP *returnValue = new cv::Mat(self->row(y)); END_WRAP }
プラグイン / モジュール | OpenCvSharpExtern.dll |
バージョン | 1.00 |
作成日 | 2021/11/30 |
著作者 | inovia |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_core_Mat |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |