Как показала практика, слепить нормальную аватарку - проблема. Она делится на 2 части:
Кое-кто ниасиливает, что по правилам заливать можно только физиономию
Совсем частый случай - когда человек не в состоянии вырезать из большой фотки нужную часть
Можно конечно рассуждать о прямизне рук и раздавать предупреждения, но это не наш метод. Меня на днях озарило, как автоматизировать процесс. А делается все так:
Лепим свое хранилище, куда можно лить полноразмерные фотки
Натравливаем на фотку детектор лиц и выделяем кусок, который вырежется под аватарку
Показываем простенький редактор, где можно подрихтовать размеры региона.
Профит!
Заодно можно сделать всякие фишки, вроде автоматической проверки, что лицо действительно есть, что оно одно, что выделили именно лицо и т.п. Осталось понять, как это с минимумом усилий воплотить.
Ну и сущая мелочь - определять лица. Ищем в гугле так:
“OpenCV”
“face detection source code”
“face detection php source”
“face detection javascript source”
При большом желании OpenCV можно примонстырить прямо к php. Но есть куски кода, портированные на php и javascript. Правда производительность еще не замерял.
Короче, меня эта идея пропёрла, а значит она получает высокий приоритет 😃
PS. Кого заинтересует тема - не путайте “face detection” и “face recognition”. Первое намного проще.
О, самое оно.
А то я долго не мог прикрутить свою фотку к аватаре. Всё время прога на что то ругалась.
прогресс… а ведь совсем недавно кто-то сомневался, что земля круглая… стареем, блин…
P.S. надо попробовать что-ли…
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""},"4279bbd73df9550077790fdb":{"_id":"4279bbd73df9550077790fdb","hid":7185,"name":"Wherewolf","nick":"Wherewolf","avatar_id":null,"css":""},"4651b2883df9550077784322":{"_id":"4651b2883df9550077784322","hid":23244,"name":"LOGRUS","nick":"LOGRUS","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"4cfa34b89970730077100901","hid":10602,"title":"Придумал, как детектор лиц примонстырить к аватаркам","html":"<p>Как показала практика, слепить нормальную аватарку - проблема. Она делится на 2 части:</p>\n<ul>\n<li>Кое-кто ниасиливает, что по правилам заливать можно только физиономию</li>\n<li>Совсем частый случай - когда человек не в состоянии вырезать из большой фотки нужную часть</li>\n</ul>\n<p>Можно конечно рассуждать о прямизне рук и раздавать предупреждения, но это не наш метод. Меня на днях озарило, как автоматизировать процесс. А делается все так:</p>\n<ul>\n<li>Лепим свое хранилище, куда можно лить полноразмерные фотки</li>\n<li>Натравливаем на фотку детектор лиц и выделяем кусок, который вырежется под аватарку</li>\n<li>Показываем простенький редактор, где можно подрихтовать размеры региона.</li>\n<li>Профит!</li>\n</ul>\n<p>Заодно можно сделать всякие фишки, вроде автоматической проверки, что лицо действительно есть, что оно одно, что выделили именно лицо и т.п. Осталось понять, как это с минимумом усилий воплотить.</p>\n<!--cut-->\n<p>Ну и сущая мелочь - определять лица. Ищем в гугле так:</p>\n<ul>\n<li>“OpenCV”</li>\n<li>“face detection source code”</li>\n<li>“face detection php source”</li>\n<li>“face detection javascript source”</li>\n</ul>\n<p>При большом желании OpenCV можно примонстырить прямо к php. Но есть куски кода, портированные на php и javascript. Правда производительность еще не замерял.</p>\n<p>Короче, меня эта идея пропёрла, а значит она получает высокий приоритет <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span></p>\n<p>PS. Кого заинтересует тема - не путайте “face detection” и “face recognition”. Первое намного проще.</p>\n","user":"39c21abc3df9550077797d18","ts":"2010-12-04T12:31:52.000Z","st":1,"cache":{"comment_count":2,"last_comment":"4cfa9980997073007716cca0","last_comment_hid":2,"last_ts":"2010-12-04T19:41:52.000Z","last_user":"4279bbd73df9550077790fdb"},"views":823,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}