При работе с изображениями в OpenCV важно понимать, как происходит адресация пикселей. Это необходимо для правильного извлечения и манипулирования пикселями в изображении.
Ось X и ось Y
- Ось X направлена привычным образом — слева направо.
- Ось Y направлена сверху вниз.
Таким образом, координата (0, 0) соответствует верхнему левому углу изображения.
Координаты пикселей
В OpenCV изображения хранятся в виде массивов Numpy, где каждая ячейка массива представляет собой пиксель изображения.
Особенностью Numpy является то, что при обращении к элементам массива сначала указывается координата по оси Y (строка), а затем координата по оси X (столбец).
Однако, во всех функциях OpenCV координаты будут использоваться в привычном формате - сначала X, потом Y!
Пример
Рассмотрим изображение размером 3x3 пикселя:
+---------+---------+---------+
| (0, 0) | (0, 1) | (0, 2) |
| Pixel | Pixel | Pixel |
| BGR | BGR | BGR |
+---------+---------+---------+
| (1, 0) | (1, 1) | (1, 2) |
| Pixel | Pixel | Pixel |
| BGR | BGR | BGR |
+---------+---------+---------+
| (2, 0) | (2, 1) | (2, 2) |
| Pixel | Pixel | Pixel |
| BGR | BGR | BGR |
+---------+---------+---------+
Каждый пиксель изображен с его координатами в формате (Y, X). Например:
- Координата (0, 0) — это верхний левый угол.
- Координата (1, 2) — это пиксель во второй строке и третьем столбце.
- Координата (2, 1) — это пиксель в третьей строке и втором столбце.
Обращение к пикселям в Numpy
Чтобы обратиться к определенному пикселю в изображении, хранящемся в виде массива Numpy, нужно указать координаты в формате [Y, X]
. Например: