Как получить цветовые коды RGB из изображения и сделать их массивом? - PullRequest
0 голосов
/ 14 ноября 2018

Прежде чем задать вопрос, я хочу показать свой код Python, который я использую для чтения ячеек Excel, где я рисую все, что хочу, и подготавливаю ячейки Excel для кодов arduino для освещения на 32x92-пиксельной башне.

    import xlrd
    ExcelFileName= 'data.xlsx'
    workbook = xlrd.open_workbook(ExcelFileName) 
    worksheet = workbook.sheet_by_name("Sheet1")
#inside of the data.xlsx file I create 39 row and 31 column and this where I'm #drawing what I want to light up.

    num_rows = worksheet.nrows #Number of Rows
    num_cols = worksheet.ncols #Number of Columns

    x=0  #for x line
    y=0  #for y line
    floors=-1
    rooms=-1

    def cell(y,x):  #for getting values from each cells

        return worksheet.cell_value(y, x) # Read the data in the current cell

    #this is tower model and every floor has 92 addressable rgb leds.And there is 30 floors.Each 10 floor has different data cable so 1 data line controls 920 rgb.

    #On arduino I have macro which is "#define LEDNO(FLOOR, ROOM) ((ROOM) + (FLOOR*92))" this.So if I write floor and room number I will get number of led.Because all strip connect to each other.
    #First floor data connected from "right bottom corner",this is my start point for leds.And I'm reading excel cells so I have to start to reading from right bottom corner to have in order for my leds.

    for i in range(30,20,-1):
        y=i
        floors+=1
        for j in range(38,0,-1):
            x=j
            rooms+=1
            if rooms>37:
                rooms=0
            print("leds[LEDNO(" + str(floors) + "," + str(rooms) +")].setRGB(" + str(cell(y,x)) + ");")

    #for next 10 floor rooms should start from -1 again.
    rooms=-1
    for i in range(20,10,-1):

        y=i
        floors+=1
        for j in range(38,0,-1):
            x=j
            rooms+=1
            if rooms>37:
                rooms=0
            print("leds2[LEDNO(" + str(floors) + "," + str(rooms) +")].setRGB(" + str(cell(y,x)) + ");")

    rooms=-1
    for i in range(10,0,-1):
        y=i
        floors+=1
        for j in range(38,0,-1):
            x=j
            rooms+=1
            if rooms>37:
                rooms=0
            print("leds3[LEDNO(" + str(floors) + "," + str(rooms) +")].setRGB(" + str(cell(y,x)) + ");")

Вопрос: Как я могу получить RGB-коды из изображения с Python? И можно ли конвертировать этот код RGB для 30х92 пикселя? По крайней мере, мне нужно прочитать и распечатать данные изображения пикселей.

Мне нужно получить цветовые коды RGB из изображения, как и в Excel. Я не знаю, возможно ли это с Python или нет.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать scipy для считывания изображения в виде (30,92,3) массива с нулевыми значениями (возможно, 4 для последнего, в зависимости от файла, который вы не показываете), затем присвойте значение как вы хочу:

img[i, j, :] = RGBvalue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...