OpenCV фоновое вычитание

У меня есть изображение фоновой сцены и изображение той же сцены с объектами впереди. Теперь я хочу создать маску объекта на переднем плане с вычитанием фона. Оба изображения RGB.

Я уже создал следующий код:

cv::Mat diff;
diff.create(orgImage.dims, orgImage.size, CV_8UC3);
diff = abs(orgImage-refImage);

cv::Mat mask(diff.rows, diff.cols, CV_8U, cv::Scalar(0,0,0));
//mask = (diff > 10);

for (int j=0; j<diff.rows; j++) {
    // get the address of row j
    //uchar* dataIn= diff.ptr<uchar>(j);
    //uchar* dataOut= mask.ptr<uchar>(j);
    for (int i=0; i<diff.cols; i++) {
        if(diff.at<cv::Vec3b>(j,i)[0] > 30 || diff.at<cv::Vec3b>(j,i)[1] > 30 || diff.at<cv::Vec3b>(j,i)[2] > 30)
            mask.at<uchar>(j,i) = 255;
    }
}

Я не знаю, правильно ли я это делаю?

Ответы на вопрос(2)

Ваш ответ на вопрос