Opencv 将CvMat 8转换为CvMat
有没有办法将CvMat*转换为CvMat?我被困在一个地方的代码中,我必须使用cvCloneMat()克隆一个CvMat。这给了我CvMat*我需要它作为CvMat的地方 我试过去参考的方法,但不知怎么的,它不起作用。我正在写一个jitter/max external,它有一个图像矩阵作为输入,一个矩阵作为输出。这是一段代码Opencv 将CvMat 8转换为CvMat,opencv,Opencv,有没有办法将CvMat*转换为CvMat?我被困在一个地方的代码中,我必须使用cvCloneMat()克隆一个CvMat。这给了我CvMat*我需要它作为CvMat的地方 我试过去参考的方法,但不知怎么的,它不起作用。我正在写一个jitter/max external,它有一个图像矩阵作为输入,一个矩阵作为输出。这是一段代码 //Convert input and output matrices to OpenCV matrices cvJitter2CvMat(in_matri
//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_对象_方法(out_矩阵,gensym(“锁定”),out_savelock);
jit对象方法(在矩阵中,gensym(“锁”),在保存锁中);
返回错误;
}
问题是,当我使用“cvCanny()”而不是cvCloneMat()时,它可以工作。输出显示为视频流的边缘。但是如果我使用cvCloneMat(),它会显示一个空白图像。这适用于任何与指针相关的内容:
CvMat* pMat = cvCloneMat(...);
CvMat mat = (*pMat);
functionThatNeedsMat(*pMat);
otherFunctionThatNeedsMat(mat);
还请检查这篇关于边的文章,它声明为CvMat,而不是CvMat*。将“节奏”标题复制到边缘(但不复制图像数据)。这是错误的。因为在temp超出范围后,没有人知道会发生什么。我看到了更多的CvMat init,没有发布。仔细阅读OpenCV文档,寻找关于指针和内存使用的好教程。接受我的忠告,开始学习C/C++,然后转到OpenCV。没有基本原理,你就不能继续。当你想回到图像处理的时候,我的建议是使用C++接口。使用Mat,而不是CvMat。