我想用函数BackgroundImage从BackgroundSubtractorMOG检索getBackgroundImage()。
不幸的是我总是得到一个空矩阵。
这种行为是OpenCV2.4.8中的一个bug,还是Is必须进行某种额外的初始化?(如果您从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;
}发布于 2014-04-01 12:34:28
正如@Micka在评论中正确指出的那样:它只是没有实现!
mog.getBackgroundImage(backMOG);的呼叫跳到
void BackgroundSubtractor::getBackgroundImage(OutputArray) const {}
在文件bgfg_gaussmix2.cpp中。
长话短说:BackgroundSubtractorGMG和BackgroundSubtractorMOG目前没有在OpenCV 2.4.8中实现getBackgroundImage。只有BackgroundSubtractorMOG2支持它。
https://stackoverflow.com/questions/22785700
复制相似问题