Re: [python] Kus paměti na numpy array
Jo, numpy.ctypeslib.as_array funguje. Takže: def img_cb(buffer, buffer_size, cnt): # tady ten buffer potřebuju dostat do numpy array np_a = numpy.ctypes.as_array(buffer, shape=(1944, 2592, 3)) Díky, Petr 2018-01-11 13:54 GMT+01:00 Petr Messner : > Ahoj, co numpy.frombuffer? > > https://docs.scipy.org/doc/numpy-1.13.0/reference/ > generated/numpy.frombuffer.html > > Nebo: > > https://stackoverflow.com/questions/23930671/how-to- > create-n-dim-numpy-array-from-a-pointer > > Snad neradím blbosti, s numpy jsem takhle ještě nepracoval. > > PM > > > Dne středa 10. ledna 2018 17:08:23 UTC+1 Petr Blahos napsal(a): > > Ahoj, > > > > > > přes ctypes volám něco, co volá zpět můj callback. V tom callbacku je > jeden > > z parametrů pointer na unsigned char, a délka pole. No a já bych > potřeboval > > buď toto pole dostat do numpy array. Nevíte, jak na to? > > > > > > Volání vypadá takto: > > > > > > > > def img_cb(buffer, buffer_size, cnt): > > # tady ten buffer potřebuju dostat do numpy array > > > > > > > > > > > > cb_tp = ctypes.WINFUNCTYPE(ctypes.c_long, ctypes.POINTER(ctypes.c_ubyte), > ctypes.c_long, ctypes.c_void_p) > > cb_f = cb_tp(img_cb) > > > > > > > > volání_funkce_která_nastaví_callback(0, 1, cb_f, 1) > > volání_funkce_která_odstartuje_volání_callbacku(0, None, False, True) > > > > > > > > > > Ta data budu muset kopírovat. Dokážu udělat: > > > > > > a = numpy.array(buffer[0:buffer_size], dtype=numpy.uint8) > > > > > > > > ale to je strašně pomalé. > > > > > > Předem díky. > > -- > > Petr > > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Kus paměti na numpy array
Ahoj, co numpy.frombuffer? https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.frombuffer.html Nebo: https://stackoverflow.com/questions/23930671/how-to-create-n-dim-numpy-array-from-a-pointer Snad neradím blbosti, s numpy jsem takhle ještě nepracoval. PM Dne středa 10. ledna 2018 17:08:23 UTC+1 Petr Blahos napsal(a): > Ahoj, > > > přes ctypes volám něco, co volá zpět můj callback. V tom callbacku je jeden > z parametrů pointer na unsigned char, a délka pole. No a já bych potřeboval > buď toto pole dostat do numpy array. Nevíte, jak na to? > > > Volání vypadá takto: > > > > def img_cb(buffer, buffer_size, cnt): > # tady ten buffer potřebuju dostat do numpy array > > > > > > cb_tp = ctypes.WINFUNCTYPE(ctypes.c_long, ctypes.POINTER(ctypes.c_ubyte), > ctypes.c_long, ctypes.c_void_p) > cb_f = cb_tp(img_cb) > > > > volání_funkce_která_nastaví_callback(0, 1, cb_f, 1) > volání_funkce_která_odstartuje_volání_callbacku(0, None, False, True) > > > > > Ta data budu muset kopírovat. Dokážu udělat: > > > a = numpy.array(buffer[0:buffer_size], dtype=numpy.uint8) > > > > ale to je strašně pomalé. > > > Předem díky. > -- > Petr ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
[python] Kus paměti na numpy array
Ahoj, přes ctypes volám něco, co volá zpět můj callback. V tom callbacku je jeden z parametrů pointer na unsigned char, a délka pole. No a já bych potřeboval buď toto pole dostat do numpy array. Nevíte, jak na to? Volání vypadá takto: def img_cb(buffer, buffer_size, cnt): # tady ten buffer potřebuju dostat do numpy array cb_tp = ctypes.WINFUNCTYPE(ctypes.c_long, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_long, ctypes.c_void_p) cb_f = cb_tp(img_cb) volání_funkce_která_nastaví_callback(0, 1, cb_f, 1) volání_funkce_která_odstartuje_volání_callbacku(0, None, False, True) Ta data budu muset kopírovat. Dokážu udělat: a = numpy.array(buffer[0:buffer_size], dtype=numpy.uint8) ale to je strašně pomalé. Předem díky. -- Petr ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz