Автоматическое обнаружение лиц с использованием Picasa API для извлечения отдельных изображений

(Аналогичный вопрос был задан суперпользователю для ответов, связанных с приложениями. Вопрос размещен здесь, чтобы собрать программируемые решения для того же самого)

На моем рабочем месте фотографии паспортного размера сканируются вместе, затем разрезаются на отдельные изображения и сохраняются с уникальными номерами файлов. В настоящее время мы используем Paint.net для выбора, вырезания и сохранения изображений вручную.

Образец отсканированного документа Скриншот Picasa: (от: поиск изображений Google из нескольких источников, справедливое использование)

picasa screenshot

Например, В Picasa 3.8 при нажатии «Просмотр»> «Люди» отображаются все лица, и меня просят назвать их. Могу ли я автоматически сохранять эти отдельные изображения с именами как разные изображения?

Обновлено

Все, что я хочу сделать, это преобразовать изображение выше в отдельные изображения.

На изображении выше я показал, как Picasa 3.8 обнаруживает изображения и предлагает мне назвать их. Мне не нужно распознавание лиц, мне просто нужно распознавание лиц. Picasa обнаруживает отдельные изображения и показывает их на правой стороне. Эти отдельные изображения - то, что мне нужно. Picasa создает файл .ini, в котором сохраняются шестнадцатеричные значения, содержащие координаты отдельных лиц.

Эти отдельные лица - это то, что меня интересует. Если я могу получить координаты, Цитата из сайта помощи Picasa пользователь Technonath говорит

@oedious написал: - Это будет несколько технический, так что подождите. * Число, заключенное в rect64 (), является 64-битным шестнадцатеричным числом. * Разбейте это на четыре 16-битных числа. * Разделите каждый на максимальное 16-битное число без знака (65535), и вы получите четыре числа от 0 до 1. * Оставшиеся четыре числа дают вам относительные координаты лица. прямоугольник: (слева, сверху, справа, снизу). * Если вы хотите получить абсолютные координаты, умножьте левую и прямо по ширине изображения и верху и снизу высотой изображения.

В приведенной выше цитате говорится о числе, заключенном в rect64 (), а как насчет числа вне скобок после запятой?

Я задал связанный вопрос. Ответы на которые могут вам тоже помочь. Получите четыре 16-битных числа из 64-битного шестнадцатеричного значения.

Примечание. ini детали такие же, как у Picasa сгенерировано для конкретного изображения.

Кроме того, вопрос обновлялся несколько раз и может быть недостаточно ясным.

На сайте справки Picasa есть несколько ответов, где я задал тот же вопрос Один из ответов этого потока, чтобы получить координаты на основе шестнадцатеричных значений из ini-файла. Следующий код на C # из esac с сайта справки. Могу ли я сделать то же самое в PHP?

public static RectangleF GetRectangle(string hashstr)
{
    UInt64 hash = UInt64.Parse(hashstr, System.Globalization.NumberStyles.HexNumber);
    byte[] bytes = BitConverter.GetBytes(hash);

    UInt16 l16 = BitConverter.ToUInt16(bytes, 6);
    UInt16 t16 = BitConverter.ToUInt16(bytes, 4);
    UInt16 r16 = BitConverter.ToUInt16(bytes, 2);
    UInt16 b16 = BitConverter.ToUInt16(bytes, 0);

    float left = l16 / 65535.0F;
    float top = t16 / 65535.0F;
    float right = r16 / 65535.0F;
    float bottom = b16 / 65535.0F;

    return new RectangleF(left, top, right - left, bottom - top);
} 

Код PHP пытается преобразовать 64-битные числа в числа от 1 до 0

CO-ORDINATES : ".$cordinate1." ".$cordinate2."
"; } ?>

Результат

Остаток 1: 49551; Результат 1: 0,75608825683594 КООРДИНАТЫ: 371,99542236328 396,94633483887 Остаток 1: 19598; Результат 1: 0,29904174804688 КООРДИНАТЫ: 147,12854003906 156,99691772461 Остаток 1: 62471; Результат 1: 0,95323181152344 КООРДИНАТЫ: 468,99005126953 500,4467010498 Остаток 1: 34078; Результат 1: 0.51998901367188 КООРДИНАТЫ: 255.83459472656 272.99423217773

Итак, у меня тоже есть координаты, и @Nirmal показал, как их обрезать . Теперь следующим шагом будет анализ файла picasa.ini на предмет шестнадцатеричных кодов и имен файлов и интеграция кода. Picasa в настоящее время не предоставляет шестнадцатеричные коды через API (или Есть? ). Если бы это было так, все было бы лучше.

Итак, мы приближаемся к решению. Спасибо всем, я хотел бы наградить всех (я не могу, но не бойтесь и ждите всплеска вашей репутации!)

9
задан 17 revs 23 May 2017 в 12:00
поделиться