Я начал изучать 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]
Три скобки в n-мерном массиве обозначают размерность, в данном случае три измерения: все изображение, затем высота, ширина и цветовой канал (bgr), то есть первая скобка — это само изображение, затем строки пикселей (высота, ширина) и, наконец, значения BGR отдельных пикселей (определяемые предыдущим значением высоты и ширины) для цвета.
Думайте об этом как о медленном принтере, печатающем изображение строка за строкой, по одному пикселю за раз.
[[[ в команде print(myimage) указывает, что myimage представляет собой трехмерный массив NumPy.
Вот разбивка того, что представляет собой каждая скобка:
Другими словами, myimage — это массив строк, где каждая строка — это массив пикселей, а каждый пиксель — это массив из трех значений цвета (красного, зеленого и синего).
Я думаю, что основная идея вам просто еще не пришлась по душе. Возможно, это вам поможет: если бы вы хотели как-то сохранить изображение, как бы вы это сделали? Это если вы не будете использовать библиотеку. Как бы вы структурировали данные?