将CvMat 8转换为CvMat

时间:2011-12-13 09:37:35

标签: opencv

有没有办法可以将CvMat *转换为CvMat?我被困在我必须使用cvCloneMat()克隆CvMat的地方的代码中。这给了我CvMat *,因为我需要它作为CvMat。

我尝试过这种解除引用的东西,但不知何故它不起作用。我正在写一个抖动/最大外部,它有一个图像矩阵作为输入,矩阵作为输出。这是一段代码

    //Convert input and output matrices to OpenCV matrices
    cvJitter2CvMat(in_matrix, &source);
    cvJitter2CvMat(out_matrix, &edges);

    //Calculate threshold values
    thresh1 = x->threshold - x->range;
    thresh2 = x->threshold + x->range;
    CLIP(thresh1,0,255);
    CLIP(thresh2,0,255);



    //calculate
    //cvCanny( &source, &edges, thresh1, thresh2, 3 );
    tempo = cvCloneMat(&source);
    edges = (*tempo);   
} else {
    return JIT_ERR_INVALID_PTR;
}

出:     jit_object_method(out_matrix,gensym( “锁”),out_savelock);     jit_object_method(in_matrix,gensym( “锁”),in_savelock);     返回错误; }

问题在于,当我使用“cvCanny()”而不是cvCloneMat()时,它可以工作。输出显示为视频流的边缘。但如果我使用cvCloneMat(),它会显示一个空白图像。

1 个答案:

答案 0 :(得分:2)

对于任何与指针相关的东西都是如此:

CvMat* pMat = cvCloneMat(...);
CvMat mat = (*pMat);
functionThatNeedsMat(*pMat);
otherFunctionThatNeedsMat(mat);

还请查看有关pointer dereferencing

的文章