Используя Algodoo и Paint, я сделал эти шесть 300 × 300 монохроматических изображений четырех удобных форм:
Этот класс изображений имеет следующие свойства:
- Они всегда имеют размер 300 × 300 пикселей, монохроматический (только черно-белый) и имеют ровно четыре белых области, которые соответствуют квадрату, кругу, треугольнику и шестерне.
- Формы никогда не пересекаются и не касаются друг друга, а также не касаются границы изображения и не выходят за границы.
- Формы всегда имеют одинаковый размер, но их можно вращать и располагать любым способом.
(Фигуры также имеют равные области, хотя при растеризации таким образом их число пикселей вряд ли будет точно эквивалентным.)
Вызов
Напишите самую короткую возможную программу или функцию, которая берет в имени файла такого изображения и поворачивает все белые пиксели ...
- красный,
(255, 0, 0)
если они на площади. - синий,
(0, 0, 255)
если они в кругу. - зеленый,
(0, 255, 0)
если они в треугольнике. - желтый,
(255, 255, 0)
если они в передаче.
например
подробности
Ваша программа должна работать эффективно для всех возможных входных изображений. (Будут введены только действительные 300 × 300 монохроматические изображения.) Шесть изображений, которые я предоставил, являются лишь примерами, вы не можете жестко запрограммировать их вывод в вашу программу.
Вы не можете использовать библиотеки или функции компьютерного зрения, встроенные или внешние. Суть в том, чтобы сделать это, используя ваши собственные операции на уровне пикселей. Вы можете использовать библиотеки изображений, которые просто позволяют открывать и изменять изображения (например, PIL для Python).
Вы можете использовать любые распространенные форматы файлов изображений без потерь для ввода и вывода, если вы придерживаетесь цветовой схемы.
Вы можете взять имя файла изображения в качестве аргумента функции, из стандартного ввода или из командной строки. Выходное изображение может быть сохранено в новый файл, тот же файл или просто отображено.
счет
Представление с наименьшим количеством байтов выигрывает. Я могу протестировать материалы с дополнительными изображениями, чтобы определить их достоверность.