如下 [DllImport("SLDWDTC.dll")]
public unsafe static extern void getCameraMat(cameraPara leftCameraPara, cameraPara rightCameraPara, MCvMat* left_intrinsic_matrix, MCvMat* left_distortion_coeffs, MCvMat* right_intrinsic_matrix, MCvMat* right_distortion_coeffs);
用现在的调用可以生成一个IntPtr
IntPtr sp = Emgu.CV.CvInvoke.cvCreateMat(4, 1, Emgu.CV.CvEnum.MAT_DEPTH.CV_32F);
MCvMat* left_distortion_coeffs = Emgu.CV.CvInvoke.cvCreateMat(4, 1, Emgu.CV.CvEnum.MAT_DEPTH.CV_32F);
怎样把IntPtr 转换成结构体MCvMat的指针进而调用getCameraMat方法?
6 个解决方案
#1
cvCreateMat 这个方法本身在 C# 这里处理的时候就应该定义成 返回 MCvMat 对象。然后 MCvMat struct / class 中字段变量的定义应该和 C++ 里面数据类型相吻合。
Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。
Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。
#2
是Emgu CV 我调用这个是因为dll的C++使用的是open cv。不是游戏编程,是图像处理算法。Emgu CV的cvCreateMat 方法生成的就是IntPtr 不知道怎么转成open cv的指针了。
#3
LZ 的意思是 把得到的IntPtr转为自己的结构体么?还是?
#4
是的。那个结构体是Emgu CV 定义的
#5
以前没有做过类似的调用,不知道怎么转成指针,我是用wpf做的界面。
#1
cvCreateMat 这个方法本身在 C# 这里处理的时候就应该定义成 返回 MCvMat 对象。然后 MCvMat struct / class 中字段变量的定义应该和 C++ 里面数据类型相吻合。
Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。
Emgu CV ...... 你在玩 C# 游戏编程?Emgu CV 应该有自己的文档的吧。
#2
是Emgu CV 我调用这个是因为dll的C++使用的是open cv。不是游戏编程,是图像处理算法。Emgu CV的cvCreateMat 方法生成的就是IntPtr 不知道怎么转成open cv的指针了。
#3
LZ 的意思是 把得到的IntPtr转为自己的结构体么?还是?
#4
是的。那个结构体是Emgu CV 定义的
#5
以前没有做过类似的调用,不知道怎么转成指针,我是用wpf做的界面。