Что означают [ и ] при печати массива numpy?

Я начал изучать opencv и читал о BGR, но меня смущает то, что показывают скобки и каково значение отдельных матриц:

Итак, я прочитал на изображении:

myimage = cv2.imread(stripe.jpg')

if myimage is None:
    sys.exit("Could not read the image.")

Теперь я хочу посмотреть, что выведет эта команда:

print(type(myimage))
<class 'numpy.ndarray'>

print(myimage.shape)
(420, 420, 3)

print(myimage)
[[[255 255 255]
  [255 255 255]
  [255 255 255]
  [255 255 255]
  ...
  [ 30  19 236]
  [ 30  19 236]]
  
 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ...

Вопросы: Почему вначале три [? что представляет собой каждый [? Почему существуют отдельные экземпляры [[? нравиться:

[[...]]
[[...]]

Каждый [] имеет три числа, что, как я предполагаю, означает, что для этого пикселя значение BGR равно b=30, g=19, r=236, если я использую пример: [ 30 19 236]

Я думаю, что основная идея вам просто еще не пришлась по душе. Возможно, это вам поможет: если бы вы хотели как-то сохранить изображение, как бы вы это сделали? Это если вы не будете использовать библиотеку. Как бы вы структурировали данные?

Aziuth 06.08.2024 15:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
7
1
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Три скобки в n-мерном массиве обозначают размерность, в данном случае три измерения: все изображение, затем высота, ширина и цветовой канал (bgr), то есть первая скобка — это само изображение, затем строки пикселей (высота, ширина) и, наконец, значения BGR отдельных пикселей (определяемые предыдущим значением высоты и ширины) для цвета.

Думайте об этом как о медленном принтере, печатающем изображение строка за строкой, по одному пикселю за раз.

Ответ принят как подходящий

[[[ в команде print(myimage) указывает, что myimage представляет собой трехмерный массив NumPy.

Вот разбивка того, что представляет собой каждая скобка:

  • Самая внешняя скобка [] представляет весь массив.
  • Средняя скобка [] представляет собой двумерный фрагмент массива, который в данном случае является строкой изображения.
  • Самая внутренняя скобка [] представляет одномерный срез массива, который в данном случае является пикселем.

Другими словами, myimage — это массив строк, где каждая строка — это массив пикселей, а каждый пиксель — это массив из трех значений цвета (красного, зеленого и синего).

Другие вопросы по теме