Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
2
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

222      Глава 7. Выбор мест высадки на Марсе

Листинг 7.9. Определение и вызов функции main() для выполнения программы site_selector.py, часть 9

def main():

app = Search('670x335 km') app.run_rect_stats() app.draw_qc_rects() app.sort_stats()

ptp_img = app.draw_filtered_rects(IMG_GRAY, app.ptp_filtered) std_img = app.draw_filtered_rects(IMG_GRAY, app.std_filtered)

cv.imshow('Sorted by ptp for {} rect'.format(app.name), ptp_img) cv.waitKey(3000)

cv.imshow('Sorted by std {} rect'.format(app.name), std_img) cv.waitKey(3000)

app.make_final_display() # Включает в себя вызов mainloop().

if_name == '_main__':

main()

Начинаем с инстанцирования объекта app из класса Search. Присваиваем ему имя 670x335 km, документируя таким образом размер исследуемых прямоугольных областей. Далее по порядку вызываем методы Search. Получаем статистические данные для прямоугольников и рисуем прямоугольники для контроля качества. Упорядочиваем полученные данные от наименьших значений к наибольшим, после чего рисуем прямоугольники с лучшими показателями высоты неровностей профиля и стандартного отклонения. Показываем результат и завершаем функцию созданием заключительного обобщенного изображения.

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

На рис. 7.13 показано итоговое изображение. Оно включает отобранные прямоугольники и сводку статистик, упорядоченных на основе стандартного отклонения.

Результаты

После создания заключительного отображения первым делом нужно произвести проверку на правильность, а именно убедиться, что прямоугольники располагаются в допустимом диапазоне широт и вписываются в границы высоты, а также находятся на ровной местности. Аналогичным образом прямоугольники, отобранные по высоте неровностей профиля и стандартному

Проект #10. Выбор посадочных мест на Марсе      223

отклонению (рис. 7.11 и рис. 7.12 соответственно), должны вписываться в эти ограничения, и большинство из них должно занимать те же прямоугольные области.

Рис. 7.13. Заключительное изображение содержит оптимальные прямоугольные площадки и сводные статистические данные, упорядоченные по стандартному отклонению std

Как говорилось ранее, площадки на рис. 7.11 и 7.12 совпадают не идеально. Причина — в использовании двух разных метрик для определения ровности. Тем не менее можно быть уверенными в том, что те из них, которые совпадают, будут наиболее ровными из всех.

На заключительном рисунке собраны все оптимальные прямоугольные области, и их концентрация у западного края карты особенно обнадеживает. Здесь наблюдается самая ровная поверхность во всей зоне поиска (рис. 7.14), и программа ясно это распознала.

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