Вызов
Напишите код, который, учитывая изображение панели из случайного комикса xkcd, возвращает истинное значение, если Blackhat находится в комиксе, или false, если нет.
Кто такой Blackhat?
Blackhat - это неофициальное имя, данное персонажу в комиксах xkcd, который носит черную шляпу:
Взято со страницы объяснения xkcd на Blackhat
Шляпа Блэкхата всегда прямолинейна, черная и выглядит так же, как на картинке выше.
У других персонажей также могут быть шляпы и волосы, но ни у кого из них нет шляп с черными и прямыми краями.
вход
Изображение может быть введено любым способом, каким вы пожелаете, будь то путь к изображению или байты через STDIN. Вам не нужно принимать URL в качестве входных данных.
правила
Жесткое кодирование ответа не запрещено, но оно не ценится.
Вы не можете получить доступ к Интернету, чтобы получить ответ.
Примеры
Все изображения вырезаны из изображений с https://xkcd.com
Blackhat в панели (возврат truthy
)
Blackhat нет в панели (возврат falsey
)
Тест батареи
20 изображений, которые содержат Blackhat, можно найти здесь: https://beta-decay.github.io/blackhat.zip
20 изображений, которые не содержат Blackhat, можно найти здесь: https://beta-decay.github.io/no_blackhat.zip
Если вам нужно больше изображений для тестирования ваших программ (для подготовки к загадочным тестам), вы можете найти список всех появлений Blackhat здесь: http://www.explainxkcd.com/wiki/index.php/Category: Comics_featuring_Black_Hat
выигрыш
Программа, которая правильно определяет, находится ли Blackhat в комиксе или нет для большинства изображений, побеждает. Ваш заголовок должен включать ваш счет в процентах.
В случае разрыва связей связанным программам будут предоставлены «загадочные» изображения (то есть те, о которых только я знаю). Код, который определяет наиболее правильно, выигрывает тай-брейк.
Загадочные изображения будут раскрыты вместе с оценками.
Примечание: кажется, что имя Рэндалла для него может быть Hat Guy. Я предпочитаю Blackhat, хотя.
источник
Ответы:
PHP (> = 7), 100% (40/40)
Чтобы запустить это:
Пример:
Заметки
Некоторые примеры обнаруженных черных шляп:
Эти примеры получены путем рисования красных линий на специальных точках, найденных на изображении, которое, по мнению сценария, имеет черную шляпу (изображения могут иметь поворот по сравнению с оригинальными).
дополнительный
Перед публикацией я проверил этот сценарий на другом наборе из 15 изображений, 10 с черной шляпой и 5 без черной шляпы, и он также прошел корректно для всех из них (100%).
Вот ZIP-файл, содержащий дополнительные тестовые изображения, которые я использовал: extra.zip
В
extra/blackhat
каталоге также доступны результаты обнаружения с красными линиями. Например,extra/blackhat/1.png
это тестовое изображение иextra/blackhat/1_r.png
результат его обнаружения.источник
imagerotate
встроенный, так что ...Matlab, 87,5%
Улучшение предыдущей версии с добавлением некоторых проверок формы областей-кандидатов.
Ошибки классификации в наборе HAT : изображения 4, 14, 15, 17 .
Ошибки классификации в наборе NON HAT : изображения 4 .
Некоторые примеры исправленных классифицированных изображений:
Пример неправильного классифицированного изображения:
Старая версия (77,5%)
Подход основан на эрозии изображения, аналогичен решению, предложенному Mnemonic, но основан на V-канале изображения HSV. Кроме того, проверяется среднее значение канала выбранной области (а не его размер).
Ошибки классификации в наборе HAT : изображения 4, 5, 10 .
Ошибки классификации в наборе NON HAT : изображения 4, 5, 6, 7, 13, 14 .
источник
Пиф , 62,5%
Принимает имя файла изображения на стандартный ввод. Возвращает,
True
если среднее значение всех его цветовых компонентов RGB больше 214. Вы правильно поняли: изображения, очевидно, чёрного цвета, как правило, ярче, чем изображения черного цвета.(Конечно, кто-то может добиться большего успеха - это не код-гольф !)
источник
Python 2,
65%,72,5%,77,5% (= 31/40)Это выясняет, какие пиксели являются черными, а затем размывает маленькие смежные кусочки. Конечно, возможности для улучшения здесь.
источник