未知の領域を探索し、Kinect センサーを使用して 3D マップを作成するロボットを作成してから、1 か月が経ちました。
私は C# 開発者なので、EmguCV を OpenCV ライブラリのラッパーとして使用して、その関数をコンピューター ビジョンに使用しています。
ある用途でOpenCVが提供する「estimateAffine3D」関数を使いたいのですが、まだEmguCVには追加されていません。したがって、「P/Invoke」呼び出しを使用して、Emgu と同じように関数を使用することを考えました。Emgu のソースを開くと、CvInvoke クラスと calib3d クラスが見つかりました。その中で、次のような関数を追加しました:
[DllImport(OPENCV_CALIB3D_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)]
[return: MarshalAs(CvInvoke.BoolToIntMarshalType)]
public static extern bool cvEstimateAffine3D(
IntPtr srcpt,
IntPtr dstpt,
out IntPtr outp,
out IntPtr outliers,
double ransacThreshold = 3.0f,
double confidence = 0.99f);
(明らかなエラーについては申し訳ありません: 私は P/Invoking の初心者です)
ことはまったく機能しません。ブレークポイントを置いて Visual Studio がそれにヒットした場合、ブレークポイントで停止せず、そのまま続行してください!
助けてください!どんな助けでも大歓迎です...
ありがとう!
一番