[32/64bit] データをコピーすることなく,2 次元行列の形状やチャンネル数を変更します.
core_Mat_reshape2 p1,p2,p3,p4,p5
p1 = sptr : IntPtr self p2 = int : int cn p3 = int : int newndims p4 = var : [MarshalAs(UnmanagedType.LPArray), In] int[] newsz p5 = var : out IntPtr returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
このメソッドは,*this の要素に対する新しい行列のヘッダを作成します.この新しい行列は,サイズやチャンネル数が異なっていても構いません.以下の条件であれば,どのような組み合わせも可能です:新しい行列に余分な要素が含まれておらず,また要素が除外されていない場合.したがって,行*列*チャネル() の積は,変換後も同じでなければいけません. データはコピーされません。つまり,これは O(1) の演算です.したがって,行数を変更したり,その他の方法で行の要素のインデックスを変更したりした場合,その行列は連続したものでなければいけません.Mat::isContinuous を参照してください.例えば,STL のベクトルとして格納された 3D ポイントの集合があり,そのポイントを 3xN の行列として表現したい場合,次のようにします: std::vector<Point3f> vec;...Mat pointMat = Mat(vec).// ベクトルを Mat に変換,O(1) の演算 reshape(1).// Nx1 の 3 チャンネル行列から,Nx3 の 1 チャンネル行列を作成します. // これも O(1) の処理です. t(); // 最後に,Nx3 の行列を転置します. これは, // すべての要素をコピーすることになりますfragmentExamples: samples/cpp/pca.cpp, samples/dnn/classification.cpp. 元関数名(C#): core_Mat_reshape2 元DLLエクスポート名: core_Mat_reshape2 参照元CSファイル: Internal\PInvoke\NativeMethods\core\NativeMethods_core_Mat.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) core_Mat_reshape2(cv::Mat *self, int cn, int newndims, const int* newsz, cv::Mat **returnValue) { BEGIN_WRAP const auto ret = self->reshape(cn, newndims, newsz); *returnValue = new cv::Mat(ret); 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 |