Как сделать прямоугольник в питоне

Обновлено: 07.07.2024

[Python + OpenCV Начало работы] V. Рисование геометрических фигур

В этой статье вы узнаете, как Нарисуйте геометрические фигуры, такие как рисование линий, кругов, прямоугольников, эллипсов и т. Д. Кроме того, научитесь добавлять текстовую информацию к изображениям , Основное исследование функция line (), circle (), rectangle (), ellipse (), putText () и т. д. Он использует.

Среда: Windows 7 (64), Python 3.6, OpenCV 3.4.2

Сначала нарисуйте прямые линии

1.1 Понимание функций line()

Во многих задачах обработки изображений иногда необходимо визуализировать результаты обработки, часто используют рисование прямых линий, например преобразование линий Хафа. Для рисования прямых линий OpenCV предоставляет Функциональная строка () 。 Давайте сначала разберемся с функцией.

Функция: Нарисуйте отрезок прямой линии на изображении

img: изображение, указывающее, где рисовать прямые линии

pt1: координата начальной точки отрезка

pt2: конечные координаты отрезка

цвет: цвет отрезка. Скаляр - это значение серого, а кортеж - это значение цвета. Формат (B, G, R), например (0,0,255), красный.

толщина: толщина отрезка. По умолчанию это 1. Когда это закрытая форма, когда она установлена ​​в -1, она заполняется.

lineType: тип линии. Значением по умолчанию является cv.LINE_8.

shift: количество десятичных знаков в координатной точке.

Описание значения LineType:

cv.LINE_4: четыре соединенные линии

cv.LINE_8: восемь соединенных линий

cv.LINE_AA: сглаженная строка

1.2 Программирование

Результаты работы программы следующие:


Во-вторых, нарисуйте прямоугольник

2.1 Понимание функции rectangle ()

Во многих задачах распознавания изображений иногда требуется рамка для выбора положения объекта, а прямоугольная рамка обычно используется для выбора положения объекта. Для рисования прямоугольников OpenCV предоставляет Прямоугольник функции () , Аналогично line (), также необходимы две точечные координаты.В этой функции две точечные координаты - это координаты точки верхнего левого угла и точки нижнего правого угла. Функция имеет вид:

Функция: нарисовать прямоугольник

img: изображение, указывающее, где рисовать прямоугольник

pt1: координаты левого верхнего угла прямоугольника

pt2: координаты нижнего правого угла прямоугольника

цвет: цвет отрезка. Скаляр - это значение серого, а кортеж - это значение цвета. Формат (B, G, R), например (0,0,255), красный.

толщина: толщина отрезка. По умолчанию это 1. Когда это закрытая форма, когда она установлена ​​в -1, она заполняется.

lineType: тип линии. Значением по умолчанию является cv.LINE_8.

shift: количество десятичных знаков в координатной точке.

2.2 Программирование

Код выглядит следующим образом:

Результаты работы программы следующие:


В-третьих, нарисуйте круг

3.1 Понимание функции круга ()

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

Функция: нарисовать круг

img: изображение, указывающее, где рисовать прямоугольник

центр: координаты центра

радиус: радиус круга

цвет: цвет отрезка. Скаляр - это значение серого, а кортеж - это значение цвета. Формат (B, G, R), например (0,0,255), красный.

толщина: толщина отрезка. По умолчанию это 1. Когда это закрытая форма, когда она установлена ​​в -1, она заполняется.

lineType: тип линии. Значением по умолчанию является cv.LINE_8.

shift: количество десятичных знаков в координатной точке.

3.2 Программирование

Код выглядит следующим образом:

Результаты работы программы следующие:


В-четвертых, нарисуйте эллипс

4.1 Понимание функции эллипса ()

Рисование эллипса имеет больше параметров, чем другие графики. Эллипсу нужны координаты центральной точки, длина большой и вспомогательной осей и угол. Форма выглядит следующим образом:

Функция: нарисовать эллипс

img: изображение, указывающее, где рисовать прямоугольник

центр: координаты центра эллипса

оси: длина длинной и короткой оси, форма (длина длинной оси, длина короткой оси)

угол: угол, угол поворота эллипса в направлении против часовой стрелки

startAngle: начальный угол эллиптической дуги, измеренный по часовой стрелке от главной оси

endAngle: конечный угол эллиптической дуги, измеренный по часовой стрелке от главной оси

box: RotatedRect вместо эллипса. Это означает, что форма два рисует эллипс в повернутом прямоугольнике.

цвет: цвет отрезка. Скаляр - это значение серого, а кортеж - это значение цвета. Формат (B, G, R), например (0,0,255), красный.

толщина: толщина отрезка. По умолчанию это 1. Когда это закрытая форма, когда она установлена ​​в -1, она заполняется.

lineType: тип линии. Значением по умолчанию является cv.LINE_8.

shift: количество десятичных знаков в координатной точке.

4.2 Программирование

Код выглядит следующим образом:

Результаты работы программы следующие:


Пять, увеличить текстовую информацию

5.1 Понимание функции putText ()

Много раз нам нужно добавить текстовую информацию к изображению, OpenCV обеспечивает Функция putText () , Форма выглядит следующим образом:

Функция: Добавить текстовую информацию к изображению.

img: изображение, укажите изображение для добавления текстовой информации

org: где размещена текстовая информация с указанием позиции левого нижнего угла

fontFace: тип шрифта.

fontScale: размер шрифта, масштабный коэффициент, увеличение

цвет: цвет отрезка. Скаляр - это значение серого, а кортеж - это значение цвета. Формат (B, G, R), например (0,0,255), красный.

толщина: толщина отрезка. По умолчанию это 1. Когда это закрытая форма, когда она установлена ​​в -1, она заполняется.

lineType: тип линии. Значением по умолчанию является cv.LINE_8.

bottomLeftOrigin: если true, источник данных изображения находится в левом нижнем углу. В противном случае он находится в левом верхнем углу. По умолчанию установлено значение false.

Почему этот вариант не рисует прямоугольник а просто умножает количество звезд rows и colomns в ряд?

2 ответа 2

Вот пример рисования заполненного прямоугольника

Вот пример рисования пустого прямоугольника

Спасибо вам, а можете, пожалуйста обьяснить зачем нужно писать print() в последней строчке вашего первого кода? Этого я не пойму

Мы выводим символы в строку. Последний принт переводит курсор на следующую строку. Это не последняя строка кода, а последняя в теле цикла.

А почему должен быть не ряд звездочек? Так задан у вас алгоритм задачи - рисование в ряд(печать задана во внутреннем цикле). И рандомные значения для количества рядов/колонок тут не очень наглядны.

Когда нам нужно нарисовать прямоугольник на изображении или простой фигуре в Matplotlib, к осям следует добавить патч прямоугольник из matplotlib.patches методом add_patch .

  • Arc
  • Arrow
  • ArrowStyle
  • BoxStyle
  • Circle
  • CirclePolygon
  • ConnectionPatch
  • ConnectionStyle
  • Ellipse
  • FancyArrow
  • FancyArrowPatch
  • FancyBboxPatch
  • Patch
  • Path
  • PathPatch
  • Polygon
  • Rectangle
  • RegularPolygon
  • Shadow
  • Wedge

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

xy - это кортеж длиной 2, задающий координаты нижнего левого угла рисуемого прямоугольника,

width - это ширина прямоугольника,

height - это высота прямоугольника,

angle - это угол против часовой стрелки в градусах.

fill указывает, заполнен ли прямоугольник facecolor .

  • edgecolor : цвет краев прямоугольника.
  • facecolor : цвет прямоугольника с заливкой.

Нарисуйте прямоугольник в Matplotlib

Прямоугольный патч создается конструктором,

Координата левого нижнего угла - (1, 1) , ширина - 1 и высота - 2 .

Цвет края указан как синий, цвет заливки - красный.

Метод add_patch(P) объекта Axes добавляет Patch - p к оси .

Если fill задано как False , то прямоугольник не будет заполнен, даже если задан какой-то цвет facecolor .

Нарисуйте прямоугольник на изображении в Matplotlib

Если нам нужно нарисовать прямоугольник на изображении в Matplotlib, то это похоже на описанный выше подход, но с дополнительным шагом, чтобы получить рукоятку Axes .

plt.imshow(im) отображает изображение butterfly.jpg , а хэндл Axes может быть получен функцией plt.gca() чей gca означает get current axes .


report this ad

У неё есть функции в стиле turtle.forward(. ) и turtle.left(. ) , с помощью которых черепашка может двигаться.

Перед тем как начать работу с черепашкой, необходимо импортировать соответствующий модуль. Мы рекомендуем экспериментировать с ней в интерактивной оболочке (для начала), т.к. при использовании файлов придётся заниматься дополнительной утомительной работой. Перейди в терминал и введи:

_images/default.jpg

Not seeing anything on Mac OS? Try issuing a command like turtle.forward(0) and looking if a new window opened behind your command line.

While it might be tempting to just copy and paste what’s written on this page into your terminal, we encourage you to type out each command. Typing gets the syntax under your fingers (building that muscle memory!) and can even help avoid strange syntax errors.

_images/forward.jpg

_images/left.jpg

Функция turtle.forward(. ) заставляет черепашку двигаться вперёд на указанное расстояние. turtle.left(. ) приказывает черепашке повернуться влево на указанную градусную меру угла. А turtle.backward(. ) и turtle.right(. ) действуют анлогично — первая заставляет черепашку двигаться назад, а вторая — поворачиваться вправо.

Если ты хочешь начать заново, введи turtle.reset() , чтобы стереть рисунок. Мы рассмотрим turtle.reset() подробнее немного позже.

Стандартная “черепашка” – всего лишь треугольник. Это не интересно! Придадим ей нормальный вид командой turtle.shape() :

Так намного лучше!

If you put the commands into a file, you might have recognized that the turtle window vanishes after the turtle finished its movement. (That is because Python exits when your turtle has finished moving. Since the turtle window belongs to Python, it terminates as well.) To prevent that, just put turtle.exitonclick() at the bottom of your file. Now the window stays open until you click on it:

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

Рисуем квадрат¶

You’re not always expected to know the anwer immediately. Learn by trial and error! Experiment, see what python does when you tell it different things, what gives beautiful (although sometimes unexpected) results and what gives errors. If you want to keep playing with something you learned that creates interesting results, that’s OK too. Don’t hesitate to try and fail and learn from it!

Упражнение¶

Нарисуй квадрат, как на рисунке ниже:

_images/square.jpg

Для квадрата тебе понадобится прямоугольный, т.е. 90-градусный, угол.

Решение¶

Notice how the turtle starts and finishes in the same place and facing the same direction, before and after drawing the square. This is a useful convention to follow, it makes it easier to draw multiple shapes later on.

Читайте также: