Получить изображение маски различий между двумя изображениями Эмгу CV - PullRequest
5 голосов
/ 21 апреля 2011

Мне было интересно, как сделать два разных серых изображения и создать маску различий между ними. Любая помощь будет высоко ценится.

1 Ответ

4 голосов
/ 21 апреля 2011

Предполагая, что камера неподвижна и изображения очень хороши, вы можете найти различия между двумя изображениями, используя поэлементное вычитание. Используя C ++ API OpenCV, это выглядело бы примерно так (примечание: этот код не проверен):

void FindDifference(cv::Mat src1, cv::Mat src2, cv::Mat &dst, int threshold) {
    dst = cv::abs(src2 - src1);
    cv::threshold(dst, dst, threshold, 255, cv::THRESH_BINARY);
}

Вы можете настроить значение threshold, чтобы уменьшить количество ложных срабатываний, вызванных шумом. Если вы все еще получаете слишком много ложных срабатываний, вы должны использовать оценка движения и регистрация изображения , чтобы выровнять два изображения.

Я не знаком с API EmuCV, но было бы довольно просто преобразовать вышеуказанный код в вызовы API.

...