gpt4 book ai didi

c# - 如何编码 cvMat 和 CV_MAT_ELEM

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:33 26 4
gpt4 key购买 nike

我正在尝试在 C# 中使用一些 openCV Ml 函数,但我不想使用 emugcv,因为我的老师不会让我使用,所以我正在尝试使用 p/invoke 编码这两行代码。(哦,我应该使用普通的 dll 还是 d.dll??)我应该使用调用约定吗??

   CVAPI(CvMat*)  cvCreateMat( int rows, int cols, int type );//header def
CvMat * rowtest = cvCreateMat(1,5,CV_32FC1);

这个我有

[DllImportAttribute("opencv_ml242.dll.dll", EntryPoint="cvCreateMat")]
public static extern IntPtr cvCreateMat(int dims, const ref int sizes, int type);

#define CV_MAT_ELEM( mat, elemtype, row, col ) \
(*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))

#define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size ) \
(assert( (unsigned)(row) < (unsigned)(mat).rows && \
(unsigned)(col) < (unsigned)(mat).cols ), \
(mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))

我在执行此行(上面的标题)时遇到问题,有人可以帮助我吗?谢谢!

   CV_MAT_ELEM(*rowtest,float,0,0)

编辑:我找到了 cv_mat_elem 的东西

   public static void CV_MAT_ELEM(ref Image<Gray, float> mat, Type elemtype, int row, int col, float val)
{
MCvMat cvMat = new MCvMat();
cvMat.data = mat;

CV_MAT_ELEM_PTR_FAST(ref cvMat, row, col, sizeof(float), val);

public static void CV_MAT_ELEM_PTR_FAST(ref MCvMat mat, int row, int col, int pix_size, float val)
{
unsafe
{
int sz = sizeof(float);
if (row < mat.rows)
{
if (col < mat.cols)
{
IntPtr x = new IntPtr(&mat.data + sz * mat.step * row + sz * col);
}
}
} }

编辑:通过我的 opencv 函数使用 DLL 解决了问题,只是希望我不会失去性能。

最佳答案

通过我的 opencv 函数使用 DLL 解决了问题,只是希望我不会失去性能。

关于c# - 如何编码 cvMat 和 CV_MAT_ELEM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com