有没有办法可以将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(),它会显示一个空白图像。
答案 0 :(得分:2)
对于任何与指针相关的东西都是如此:
CvMat* pMat = cvCloneMat(...);
CvMat mat = (*pMat);
functionThatNeedsMat(*pMat);
otherFunctionThatNeedsMat(mat);
还请查看有关pointer dereferencing
的文章