使用OpenCV和BackgroundSubtractorMog2 Objective-C ++从iOS上的图像中减去背景

时间:2015-12-07 19:56:24

标签: ios opencv out-of-memory objective-c++ background-subtraction

我想在iOS上使用Objective-C ++减去图像的背景,我正面临因内存问题而终止的问题,每当我想将BackgroundSubtractorMOG2方法应用于输入图片时。

我正在研究这个主题,但是我找不到任何有用的答案。我正确应用BackgroundSubtractorMOG2方法,传递正确的参数。我也检查了我的编辑方案中的诊断程序,我的僵尸对象被禁用,因此不应该导致问题。 我在想,手机的处理能力是否会成为问题。

我在我的函数中传递了一个背景图像和相同的背景图像。我想以某种方式从图像中减去这个人。

我的代码是:

// Subtracts two images: the image taken from the background image
-(cv::Mat) subtractBackground:(cv::Mat)backPic fromImage:(cv::Mat)inImage {
if (!inImage.data) {
    NSLog(@"Unable to the picture image");
} else if (!backPic.data) {
    NSLog(@"Unable to open background");
}

cv::Mat fgMaskMOG2;

int history = 2;
int distance_threshold = 16;
bool shadow_detection = true;

cv::Mat frame[2] = { backPic, inImage};

cv::Ptr<cv::BackgroundSubtractorMOG2> createSubtractor = new cv::BackgroundSubtractorMOG2(history, distance_threshold, shadow_detection);

for(int i = 0; i < 2; i++) {
    createSubtractor->operator()(frame[i], fgMaskMOG2);
}

return fgMaskMOG2;
}

0 个答案:

没有答案