2015-10-05 33 views
0

所以我看到 - 沒有匹配的函數調用'cvAbsDiff'消息,我不知道爲什麼,但我不能編譯此代碼。OpenCV 3.0 cvAbsDiff() - 沒有匹配的函數調用'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

cvAbsDiff功能設計與舊的C API,它採用IplImage,而不是cv::Mat存儲圖像的工作。相反,使用C工作時++,你可以只使用cv::absdiff功能:

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

以供將來參考,如果你需要一個cv::Mat轉換爲IplImage,您可以通過assiging它這樣做,但通常你應該儘量避免混合兩種API風格。

IplImage ipl = myMatImage;. 

如果你看一下OpenCV array operations documentation,你會看到各種功能都與他們的C和C++變種上市。

+0

非常感謝你 –