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 <petr.mess...@gmail.com>:

> 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

Odpovedet emailem