Как программно определить фон изображения? - PullRequest
6 голосов
/ 08 сентября 2010

Мне нужно разработать программное обеспечение, которое выбирает лицо на фотографии, где фон имеет простой цвет (зеленый, как в фильмах).

Затем мы хотим скомпоновать этот выбор с другим фоновым изображениемэта часть проста со многими библиотеками.Но я не знаю, как я могу сделать выбор?Можете ли вы дать некоторые ссылки или библиотеки для расследования?Я могу сделать этот проект на любом языке по своему выбору, поэтому приветствуются примеры или ссылки на любом языке.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Хорошо, то, что вы пытаетесь сделать, называется хроматическим ключом. Как вы говорите, он часто использовался в фильмах с сине-зеленым экраном. В Windows это на самом деле довольно легко сделать, потому что он встроен в Windows как часть GDI + (или в C #, я думаю, он просто называется классом Graphics).

У меня нет примера кода, но процесс довольно прост:

С помощью GDI + вы создаете растровый объект вашего изображения переднего плана (объект с зеленым фоном). Затем создайте объект ImageAttributes. Используйте метод SetColorKey () объекта ImageAttribute, чтобы указать цвет или диапазон цветов для использования в качестве цвета фона. Наконец, нарисуйте этот растровый объект поверх целевого растрового изображения, и GDI + нарисует его так, как если бы цвет фона был прозрачным.

В коде есть еще кое-что, но концептуально это все, что нужно.

1 голос
/ 08 сентября 2010

Это, вероятно, область, где легче работать в каком-либо другом пространстве, чем RGB - например, HSV.

Я бы также посмотрел библиотеку OpenCV.

...