我想从BackgroundSubtractorMOG中使用函数getBackgroundImage().
检索BackgroundImage不幸的是我总是得到一个空矩阵。
这种行为是OpenCV2.4.8中的错误还是mabye必须进行某种额外的启动? (如果从MOG切换到MOG2,它可以正常工作。)
启发的当前初始化示例代码:
int main(int argc, char *argv[]){
BackgroundSubtractorMOG mog(3, 4, 0.8);
cv::VideoCapture cap(0);
cv::Mat frame, backMOG, foreMOG;
for(;;){
cap >> frame;
mog(frame, foreMOG,-1);
cv::imshow("foreMOG", foreMOG);
mog.getBackgroundImage(backMOG);
if(!backMOG.empty()){
cv::imshow("backMOG", backMOG); //never reached
}
if(cv::waitKey(30) >= 0) break;
}
return 0;
}
答案 0 :(得分:2)
正如@Micka在评论中正确指出的那样:它还没有实现!
mog.getBackgroundImage(backMOG);
的电话会跳转到
void BackgroundSubtractor::getBackgroundImage(OutputArray) const {}
bgfg_gaussmix2.cpp
中的。
长话短说:BackgroundSubtractorGMG
和BackgroundSubtractorMOG
目前不在OpenCV 2.4.8中实现getBackgroundImage
。只有BackgroundSubtractorMOG2
支持它。