Обнаружение водяного знака / логотипа в изображении / видео
Я пытаюсь проанализировать видеофайл и определить, есть ли в правом нижнем углу логотип сети. Я подумал, что будет проще, если я возьму несколько случайных кадров и посмотрю, имеют ли они общий логотип / водяной знак.
Я просто не знаю, с чего начать. Есть ли сделать это с помощью API/ командной строки?
1 ответ
Во-первых, вы вряд ли сможете использовать инструмент командной строки для этого.
Поиск общности не будет таким простым, как вы думаете. Все видео сжаты, и это вызывает небольшие различия даже в вещах, которые могут выглядеть одинаково для человеческого глаза.
Если вы знаете основной размер и регион логотипа, вы можете ограничить свой поиск той частью экрана, которая должна сделать его быстрее. После этого я, предположив, что знаю, что такое логотип, вычел один кадр из другого. Сделайте это путем вычитания каждого цветового канала из соответствующего цветового канала того же пикселя в предыдущем кадре. Если у вас много видео, возможно, отодвиньте несколько кадров друг от друга, чтобы медленно перемещающаяся часть изображения не вызывала ложных срабатываний. Если у вас есть это вычитание, все то же самое должно иметь значение, близкое к нулю. Все остальное должно быть намного выше.
С этой вычтенной областью, если много пикселей близко к нулю, у вас, вероятно, есть логотип или, по крайней мере, что-то постоянное. Вы можете подвести итоги и затем сложить их. Это будет преувеличивать значения, не близкие к нулю. Затем выберите порог. Если значения ниже, вероятно, у вас есть логотип.