[32/64bit] 2次元の点の周りに楕円を描く関数です。
imgproc_fitEllipseDirect_Point p1,p2,p3
p1 = var : Point[] points p2 = int : int pointsLength p3 = var : out RotatedRect returnValue
(プラグイン / モジュール : OpenCvSharpExtern.dll)
この関数は,2 次元の点の集合にフィットする楕円を計算します.また,楕円が内接する回転した矩形を返します.ここでは,[79]のDirect least square(Direct)法を用いています.楕円の場合、この基底セットは、6つの自由係数の集合である \chi= \left(x^2, x y, y^2, x, y, 1\right) \( A^T=\left\{A_{text{xx}},A_{text{xy}},A_{text{yy}},A_x,A_y,A_0\right) ??となります。しかし、楕円を指定するには、長軸と短軸の長さ\( (a,b) )、位置\( (x_0,y_0) )、方向\( ????? ) の5つの数字があればよいのです。これは、基底セットには、直線、二次曲線、放物線、双曲線のほか、楕円形の関数もフィットする可能性があるからです。Direct法では、フィッティングの対象を楕円に限定するために、\( 4 A_{xx} A_{yy}- A_{xy}^2 > 0 ? )を確保します。この条件は、不等式を満足し、かつ係数を任意にスケーリングできることから、過度に制限するものではありません。\A^T D^T D A ??? -? ???\A^T C A =1\♪♪♪♪♪~0&0&2&0&0&0 0&1&0&0&0 2&0&0&0&0&0&0 0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0エンド{matrix}です。D^T D A = \lambda \left( C\right) A ??{equation*}このシステムでは、正の固有値は1つしかなく、その固有ベクトル\(mathbf{u}\)を解としています。これらを用いて、係数を求めます。A = ????? )\A^T C A =1」が保証されています。例: samples/cpp/fitellipse.cpp. 元関数名(C#): imgproc_fitEllipseDirect_Point 元DLLエクスポート名: imgproc_fitEllipseDirect_Point 参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_fitEllipseDirect_Point(cv::Point* points, int pointsLength, MyCvBox2D* returnValue) { BEGIN_WRAP const cv::Mat_<cv::Point> pointsVec(pointsLength, 1, points); *returnValue = c(cv::fitEllipseDirect(pointsVec)); END_WRAP }
プラグイン / モジュール | OpenCvSharpExtern.dll |
バージョン | 1.00 |
作成日 | 2021/11/30 |
著作者 | inovia |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_imgproc |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |