OpenCV 3.0 cvAbsDiff() - 没有匹配函数来调用'cvAbsDiff'

时间:2015-10-05 02:56:04

标签: c++ xcode opencv opencv3.0

所以我看到 - 没有匹配函数来调用'cvAbsDiff'消息,我不知道为什么但是我无法编译这段代码。

Xcode建议将cv :: Mat转换为CvArr。但这是疯狂的方式。

cv::Mat firstFrame;

- (void)processImage:(Mat&)image;
{

    cv::Mat diffFrame=image.clone();

    cv::Mat currentFrame=image.clone();

    cvtColor(image, currentFrame, CV_BGR2GRAY);

    if (countNonZero(firstFrame) < 1){firstFrame=currentFrame;}
    else
    {

        cvAbsDiff(firstFrame,currentFrame,image);
//        image=diffFrame;



    }



}

1 个答案:

答案 0 :(得分:1)

cvAbsDiff函数旨在与较旧的C api一起使用,后者使用IplImage而不是cv::Mat来存储图像。相反,在使用C ++时,您只需使用cv::absdiff函数:

cv::absdiff(firstFrame, currentFrame, image);

为了将来参考,如果您需要将cv::Mat转换为IplImage,可以通过分配来实现,但通常应该尝试避免混合两种API样式。

IplImage ipl = myMatImage;.

如果查看OpenCV array operations documentation,您会看到各种功能都列在其C和C ++变种中。