Предполагая, что камера неподвижна и изображения очень хороши, вы можете найти различия между двумя изображениями, используя поэлементное вычитание. Используя 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.