Python - как преобразовать 24-битное изображение PNG в 32-битное с помощью Open-cv или PIL - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу преобразовать 24-битное изображение PNG в 32-битное, чтобы оно могло отображаться на светодиодной матрице.Вот код, который я использовал, но он преобразовал 24-битный в 48-битный

import cv2
import numpy as np
i = cv2.imread("bbb.png")
img = np.array(i, dtype = np.uint16)
img *= 256
cv2.imwrite('test.png', img)

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Я посмотрел на изображение christmas.png в коде, к которому вы привязали, и оно выглядит как изображение 624x8 пикселей с палитрой и 8-битным альфа-каналом.

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

#!/usr/local/bin/python3
from PIL import Image

# Load the image and convert to 32-bit RGBA
im = Image.open("image.png").convert('RGBA')

# Save result
im.save("result.png")

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

enter image description here

0 голосов
/ 12 сентября 2018

Я думаю, вы перепутали цветовую глубину с размером входного изображения / массива. Из ссылок, размещенных в комментариях, нет упоминания о 32 как о небольшой глубине. Сценарий по этой ссылке учебника использует изображение с 3-канальным 8-битным цветом (красный, зеленый и синий кодовые значения, каждое из которых представлено в виде чисел от 0 до 255). Входное изображение должно иметь ту же высоту, что и массив, но может иметь другую ширину для прокрутки.

Подробнее о битовой глубине: https://en.wikipedia.org/wiki/Color_depth

...