In [1]:
import numpy as np
np.set_printoptions(precision=4)

Initializing camera:


In [2]:
import pyavfcam
# Open the default video source
cam = pyavfcam.AVFCam(sinks='image')
print( "Size: " + str(cam.shape[0]) + " x " + str(cam.shape[1]) )


Size: 720 x 1280

In [3]:
cam


Out[3]:
AVFCam(['image'], shape=(720, 1280))

Snap a picture:


In [4]:
frame = np.asarray(cam.snap_picture())
print('frame as size', frame.shape)


frame as size (720, 1280)

Accessing a pixel:


In [5]:
frame[0, 0]


Out[5]:
(30, 24, 70, 255)

Accessing a line:


In [6]:
frame[0, :]


Out[6]:
array([( 30,  24,  70, 255), ( 28,  22,  68, 255), ( 28,  23,  65, 255),
       ..., (159, 153, 188, 255), (155, 149, 186, 255),
       (157, 151, 188, 255)],
      dtype=[('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1')])

In [7]:
dtype = [('f0', np.uint8), ('f1', np.uint8), ('f2', np.uint8), ('f3', np.uint8)]
frame[:, 0].view(dtype=dtype)


Out[7]:
array([( 30, 24,  70, 255), ( 32, 24,  66, 255), ( 36, 25,  62, 255),
       ( 30, 25,  60, 255), ( 27, 26,  61, 255), ( 30, 26,  61, 255),
       ( 32, 26,  61, 255), ( 34, 26,  59, 255), ( 36, 25,  62, 255),
       ( 36, 24,  66, 255), ( 32, 20,  64, 255), ( 36, 23,  68, 255),
       ( 32, 20,  64, 255), ( 35, 22,  67, 255), ( 36, 24,  66, 255),
       ( 34, 25,  62, 255), ( 27, 26,  61, 255), ( 30, 26,  61, 255),
       ( 34, 26,  61, 255), ( 34, 26,  61, 255), ( 36, 26,  61, 255),
       ( 34, 26,  61, 255), ( 32, 26,  61, 255), ( 27, 26,  61, 255),
       ( 32, 27,  59, 255), ( 34, 27,  57, 255), ( 33, 25,  58, 255),
       ( 37, 27,  62, 255), ( 38, 25,  61, 255), ( 36, 26,  61, 255),
       ( 36, 26,  61, 255), ( 36, 24,  66, 255), ( 33, 22,  67, 255),
       ( 32, 24,  68, 255), ( 31, 25,  69, 255), ( 34, 27,  68, 255),
       ( 35, 29,  66, 255), ( 40, 35,  67, 255), ( 34, 34,  66, 255),
       ( 34, 38,  69, 255), ( 38, 42,  76, 255), ( 69, 62,  92, 255),
       ( 92, 75, 101, 255), ( 92, 75, 101, 255), ( 89, 80, 101, 255),
       ( 93, 86, 105, 255), ( 92, 85, 104, 255), ( 97, 88, 108, 255),
       ( 97, 88, 108, 255), (100, 88, 108, 255), (104, 88, 108, 255),
       (106, 87, 109, 255), (105, 88, 110, 255), (104, 88, 108, 255),
       (104, 88, 108, 255), (104, 88, 106, 255), (104, 88, 106, 255),
       (104, 88, 108, 255), (102, 84, 104, 255), (105, 87, 105, 255),
       (106, 89, 104, 255), (102, 90, 102, 255), ( 97, 89, 106, 255),
       ( 93, 89, 108, 255), ( 95, 89, 108, 255), ( 96, 90, 109, 255),
       ( 95, 89, 108, 255), ( 93, 89, 108, 255), ( 94, 88, 106, 255),
       ( 99, 90, 109, 255), (102, 88, 108, 255), (104, 88, 106, 255),
       (104, 88, 106, 255), (104, 89, 104, 255), (102, 90, 102, 255),
       (102, 90, 102, 255), (100, 89, 101, 255), (102, 90, 102, 255),
       (104, 89, 102, 255), (104, 89, 102, 255), (102, 89, 104, 255),
       (104, 88, 106, 255), (106, 88, 108, 255), (102, 88, 109, 255),
       ( 96, 87, 108, 255), ( 96, 90, 109, 255), ( 94, 88, 105, 255),
       ( 93, 89, 106, 255), ( 94, 88, 106, 255), ( 97, 89, 106, 255),
       ( 97, 90, 102, 255), ( 95, 90, 102, 255), ( 95, 90, 104, 255),
       ( 95, 90, 102, 255), ( 95, 88, 100, 255), (100, 87, 105, 255),
       (103, 87, 106, 255), (100, 87, 106, 255), ( 97, 88, 108, 255),
       ( 95, 89, 108, 255), ( 94, 88, 106, 255), ( 95, 89, 108, 255),
       ( 96, 89, 110, 255), ( 95, 88, 109, 255), ( 95, 89, 108, 255),
       ( 95, 89, 108, 255), ( 95, 89, 108, 255), ( 99, 90, 109, 255),
       (100, 88, 109, 255), (100, 86, 110, 255), (101, 83, 112, 255),
       (104, 85, 116, 255), (105, 86, 118, 255), (100, 82, 111, 255),
       ( 99, 82, 106, 255), (101, 85, 107, 255), (104, 88, 108, 255),
       (106, 93, 112, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (104, 88, 108, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (104, 88, 108, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (103, 87, 106, 255), (104, 87, 109, 255), (104, 89, 102, 255),
       (104, 89, 102, 255), (105, 91, 103, 255), (106, 89, 102, 255),
       (105, 90, 105, 255), (108, 93, 110, 255), (104, 88, 106, 255),
       (105, 89, 109, 255), (104, 88, 106, 255), (104, 88, 108, 255),
       ( 96, 87, 106, 255), ( 95, 88, 109, 255), ( 95, 88, 109, 255),
       ( 96, 89, 110, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (100, 85, 102, 255), (104, 87, 109, 255), (104, 87, 109, 255),
       (104, 88, 106, 255), (104, 89, 104, 255), (104, 89, 102, 255),
       (104, 89, 104, 255), (102, 89, 106, 255), (104, 88, 108, 255),
       (105, 89, 109, 255), (103, 87, 105, 255), (105, 89, 109, 255),
       (104, 88, 108, 255), (104, 87, 109, 255), (104, 88, 108, 255),
       (104, 88, 108, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (104, 88, 108, 255), (104, 88, 108, 255), (101, 86, 105, 255),
       ( 99, 83, 103, 255), (101, 86, 105, 255), (104, 88, 106, 255),
       (104, 88, 106, 255), (104, 88, 108, 255), (100, 84, 104, 255),
       (100, 84, 104, 255), (101, 86, 105, 255), (101, 83, 103, 255),
       (106, 85, 105, 255), (110, 87, 108, 255), (108, 87, 109, 255),
       (108, 87, 108, 255), (106, 88, 108, 255), (103, 87, 106, 255),
       (100, 88, 108, 255), ( 94, 88, 106, 255), ( 95, 89, 106, 255),
       ( 95, 90, 104, 255), (104, 90, 100, 255), (105, 91, 103, 255),
       (104, 89, 102, 255), (106, 89, 102, 255), (108, 89, 102, 255),
       (113, 90, 103, 255), (108, 88, 104, 255), (104, 88, 106, 255),
       (104, 88, 108, 255), (104, 88, 108, 255), (104, 88, 108, 255),
       (107, 91, 113, 255), (108, 93, 112, 255), (107, 91, 111, 255),
       (105, 90, 107, 255), (107, 92, 107, 255), (104, 89, 102, 255),
       (111, 93, 109, 255), (106, 88, 106, 255), (106, 88, 108, 255),
       (104, 87, 109, 255), (104, 87, 109, 255), (104, 88, 106, 255),
       (107, 89, 107, 255), (104, 88, 106, 255), (105, 90, 107, 255),
       (104, 88, 108, 255), (103, 87, 106, 255), (104, 88, 108, 255),
       (106, 88, 108, 255), (106, 88, 108, 255), (106, 88, 106, 255),
       (105, 90, 107, 255), (108, 93, 112, 255), (104, 87, 109, 255),
       (104, 88, 106, 255), (105, 90, 105, 255), (104, 89, 102, 255),
       (104, 89, 102, 255), (108, 94, 109, 255), (107, 90, 103, 255),
       (107, 93, 106, 255), (103, 91, 103, 255), (104, 89, 102, 255),
       (107, 88, 101, 255), (108, 89, 102, 255), (106, 89, 102, 255),
       (104, 89, 102, 255), (104, 89, 102, 255), (104, 89, 102, 255),
       (102, 90, 102, 255), (104, 89, 102, 255), (104, 89, 104, 255),
       (105, 90, 107, 255), (106, 88, 106, 255), (104, 88, 108, 255),
       (109, 87, 105, 255), (110, 88, 106, 255), (109, 88, 101, 255),
       (110, 89, 102, 255), (111, 90, 103, 255), (109, 88, 101, 255),
       (108, 86, 100, 255), (110, 89, 102, 255), (104, 90, 100, 255),
       (101, 87, 100, 255), (100, 86,  99, 255), (101, 87, 100, 255),
       ( 99, 85,  96, 255), (100, 86,  99, 255), ( 99, 85,  97, 255),
       (100, 86,  99, 255), ( 96, 81,  94, 255), ( 97, 82,  95, 255),
       ( 96, 81,  94, 255), ( 93, 78,  93, 255), ( 96, 81,  94, 255),
       ( 96, 82,  92, 255), ( 96, 82,  90, 255), ( 93, 83,  89, 255),
       ( 99, 82,  95, 255), ( 96, 81,  94, 255), ( 96, 81,  94, 255),
       ( 94, 78,  90, 255), ( 95, 76,  89, 255), (100, 79,  90, 255),
       (102, 81,  94, 255), ( 96, 77,  90, 255), (101, 80,  82, 255),
       (100, 82,  89, 255), ( 95, 79,  90, 255), ( 92, 78,  90, 255),
       ( 90, 77,  92, 255), ( 93, 82,  94, 255), ( 96, 81,  94, 255),
       ( 98, 81,  94, 255), ( 93, 82,  94, 255), ( 95, 83,  95, 255),
       ( 93, 82,  94, 255), ( 96, 81,  94, 255), (100, 86,  99, 255),
       ( 99, 85,  97, 255), ( 96, 81,  94, 255), ( 96, 81,  94, 255),
       (102, 80,  98, 255), ( 96, 76,  96, 255), ( 95, 77,  97, 255),
       ( 92, 76,  98, 255), ( 90, 76,  98, 255), ( 91, 75,  95, 255),
       ( 94, 76,  96, 255), ( 98, 80,  98, 255), ( 98, 81,  96, 255),
       ( 99, 85,  97, 255), ( 93, 82,  94, 255), ( 98, 86,  99, 255),
       ( 96, 81,  94, 255), ( 96, 81,  94, 255), ( 96, 81,  94, 255),
       ( 96, 81,  94, 255), ( 96, 81,  96, 255), ( 92, 77,  92, 255),
       ( 97, 82,  95, 255), ( 92, 78,  89, 255), ( 92, 78,  89, 255),
       ( 96, 81,  94, 255), ( 91, 76,  93, 255), ( 96, 80,  98, 255),
       ( 93, 82,  94, 255), ( 93, 82,  94, 255), ( 96, 81,  96, 255),
       ( 96, 81,  94, 255), ( 91, 76,  91, 255), ( 93, 78,  95, 255),
       ( 93, 78,  95, 255), ( 96, 80,  98, 255), ( 93, 82,  94, 255),
       ( 93, 82,  94, 255), ( 93, 82,  94, 255), ( 99, 82,  95, 255),
       (100, 81,  94, 255), (100, 81,  94, 255), (102, 86,  99, 255),
       (102, 89, 104, 255), (105, 93, 106, 255), (105, 90, 105, 255),
       (105, 90, 107, 255), (103, 87, 106, 255), (104, 88, 108, 255),
       (104, 88, 106, 255), (106, 89, 104, 255), (108, 90, 100, 255),
       (110, 89, 100, 255), (108, 89, 102, 255), (106, 89, 102, 255),
       (104, 89, 102, 255), (104, 89, 102, 255), (109, 93, 106, 255),
       (109, 90, 103, 255), (110, 89, 102, 255), (110, 89, 100, 255),
       (110, 89, 102, 255), (109, 87, 103, 255), (108, 88, 106, 255),
       (106, 88, 108, 255), (104, 88, 106, 255), (104, 89, 104, 255),
       (104, 90, 100, 255), (104, 89, 102, 255), (105, 91, 103, 255),
       (104, 89, 102, 255), (106, 89, 102, 255), (105, 88, 101, 255),
       (108, 89, 102, 255), (109, 90, 103, 255), (110, 89, 102, 255),
       (110, 86, 100, 255), (109, 88, 101, 255), (108, 86, 100, 255),
       (109, 88, 101, 255), (104, 86,  99, 255), (104, 86,  99, 255),
       ( 97, 82,  95, 255), ( 93, 82,  94, 255), ( 96, 82,  92, 255),
       ( 99, 85,  96, 255), ( 93, 82,  94, 255), ( 96, 81,  94, 255),
       ( 96, 81,  94, 255), ( 97, 82,  95, 255), ( 96, 81,  96, 255),
       ( 92, 77,  92, 255), ( 92, 77,  92, 255), ( 92, 77,  94, 255),
       ( 87, 72,  91, 255), ( 89, 73,  92, 255), ( 87, 72,  91, 255),
       ( 92, 76,  96, 255), ( 92, 77,  94, 255), ( 93, 81,  96, 255),
       ( 90, 78,  90, 255), (100, 81,  94, 255), (103, 82,  95, 255),
       (103, 84,  97, 255), (100, 85, 100, 255), ( 98, 85, 102, 255),
       (102, 84, 104, 255), (110, 87, 109, 255), (108, 87, 108, 255),
       (114, 89, 110, 255), (113, 86, 105, 255), (113, 89, 105, 255),
       (108, 89, 102, 255), (106, 89, 102, 255), (101, 87, 100, 255),
       (100, 89, 101, 255), (104, 89, 104, 255), (101, 87, 100, 255),
       (103, 88, 101, 255), (106, 89, 102, 255), (103, 88, 101, 255),
       (105, 91, 103, 255), (104, 89, 102, 255), (104, 89, 104, 255),
       (104, 88, 108, 255), (104, 88, 106, 255), (101, 87, 102, 255),
       ( 99, 85,  96, 255), (100, 86,  97, 255), (104, 89, 104, 255),
       (104, 88, 106, 255), (104, 87, 109, 255), (103, 87, 105, 255),
       (104, 85, 105, 255), (101, 83, 103, 255), (106, 85, 105, 255),
       (108, 87, 108, 255), (108, 85, 103, 255), (105, 84,  99, 255),
       (111, 90, 103, 255), (107, 85,  99, 255), (107, 85,  99, 255),
       (107, 86,  97, 255), (110, 89, 100, 255), (104, 86,  97, 255),
       (102, 86,  99, 255), (104, 86,  99, 255), (108, 89, 102, 255),
       (104, 86,  99, 255), (104, 86,  99, 255), (107, 88, 101, 255),
       (110, 86, 100, 255), (108, 80,  94, 255), (106, 77,  93, 255),
       ( 98, 72,  86, 255), ( 94, 72,  86, 255), ( 94, 72,  88, 255),
       ( 94, 72,  86, 255), ( 94, 72,  86, 255), ( 94, 72,  86, 255),
       ( 95, 74,  87, 255), ( 98, 77,  90, 255), (100, 78,  92, 255),
       (102, 81,  94, 255), (102, 81,  94, 255), (108, 86, 100, 255),
       (107, 85,  99, 255), (103, 84,  97, 255), (101, 87, 100, 255),
       (102, 90, 102, 255), (104, 87, 100, 255), (108, 89, 102, 255),
       (107, 85,  99, 255), (108, 86, 100, 255), (105, 84,  97, 255),
       (111, 90, 103, 255), (110, 89, 102, 255), (108, 86, 100, 255),
       (110, 89, 102, 255), (107, 85,  99, 255), (109, 85,  99, 255),
       (107, 85,  99, 255), (104, 86,  99, 255), (104, 86,  99, 255),
       (107, 85,  99, 255), (104, 86,  99, 255), (102, 86,  99, 255),
       (100, 86,  99, 255), (100, 86,  99, 255), (100, 86,  99, 255),
       (103, 88, 101, 255), (104, 89, 104, 255), (100, 85, 102, 255),
       (100, 85, 102, 255), (100, 84, 104, 255), (100, 84, 104, 255),
       (100, 84, 104, 255), (100, 85, 102, 255), (100, 85, 102, 255),
       (100, 85, 100, 255), (100, 86,  99, 255), ( 99, 85,  97, 255),
       (100, 86,  99, 255), (100, 86,  99, 255), (109, 85,  99, 255),
       (107, 85, 100, 255), (103, 83, 101, 255), (102, 85, 102, 255),
       (101, 86, 105, 255), (101, 86, 103, 255), (100, 85, 100, 255),
       (100, 86,  97, 255), (100, 85, 100, 255), (102, 85, 100, 255),
       (104, 84, 102, 255), (104, 84, 104, 255), (104, 83, 106, 255),
       (104, 82, 109, 255), (100, 82, 111, 255), ( 98, 82, 111, 255),
       ( 99, 82, 108, 255), (100, 84, 106, 255), (100, 84, 104, 255),
       (100, 84, 104, 255), (100, 84, 104, 255), (101, 85, 107, 255),
       (100, 84, 104, 255), ( 99, 84, 101, 255), ( 99, 87, 100, 255),
       ( 99, 85,  97, 255), (101, 87, 100, 255), ( 96, 81,  96, 255),
       (100, 85, 102, 255), ( 97, 81,  99, 255), (100, 84, 104, 255),
       (101, 85, 107, 255), (102, 86,  97, 255), (104, 87, 100, 255),
       (100, 86,  99, 255), (100, 86,  99, 255), (100, 86,  99, 255),
       ( 97, 82,  95, 255), (100, 85, 100, 255), (100, 85, 102, 255),
       (102, 84, 104, 255), (100, 85, 102, 255), ( 98, 85, 102, 255),
       ( 94, 86, 102, 255), ( 93, 87, 103, 255), ( 88, 82,  99, 255),
       ( 89, 81,  98, 255), ( 95, 81, 101, 255), ( 98, 80,  98, 255),
       (103, 83, 103, 255), (102, 79,  99, 255), (103, 83, 103, 255),
       (104, 85, 105, 255), ( 98, 85, 102, 255), ( 99, 87, 102, 255),
       (100, 86,  99, 255), (100, 86,  97, 255), (100, 86,  97, 255),
       ( 99, 85,  97, 255), ( 97, 82,  97, 255), ( 99, 84, 101, 255),
       (100, 85, 102, 255), ( 96, 81,  96, 255), ( 99, 85,  97, 255),
       (100, 84, 104, 255), ( 99, 83, 103, 255), (102, 82, 102, 255),
       (105, 83, 103, 255), (103, 80, 101, 255), (100, 79,  99, 255),
       ( 98, 80,  98, 255), (100, 80,  96, 255), (102, 80,  96, 255),
       (102, 81,  94, 255), (103, 82,  95, 255), (103, 84,  97, 255),
       (106, 87, 100, 255), (102, 86,  99, 255), (100, 86,  99, 255),
       (100, 86,  99, 255), (100, 86,  99, 255), ( 97, 82,  95, 255),
       ( 99, 82,  95, 255), ( 99, 85,  97, 255), ( 97, 82,  95, 255),
       ( 96, 81,  94, 255), ( 96, 81,  94, 255), ( 98, 81,  94, 255),
       ( 96, 81,  94, 255), ( 95, 83,  95, 255), (100, 86,  99, 255),
       ( 99, 85,  97, 255), (100, 81,  94, 255), (100, 81,  94, 255),
       (102, 81,  94, 255), (102, 81,  92, 255), (100, 80,  96, 255),
       (100, 79,  99, 255), ( 96, 80,  98, 255), ( 97, 82,  97, 255),
       ( 96, 80,  98, 255), ( 96, 80,  98, 255), ( 96, 81,  96, 255),
       ( 95, 82,  97, 255), ( 93, 82,  94, 255), ( 88, 83,  95, 255),
       ( 89, 82,  94, 255), ( 95, 83,  95, 255), ( 96, 81,  94, 255),
       ( 96, 81,  94, 255), ( 96, 81,  94, 255), ( 96, 81,  94, 255),
       ( 93, 82,  94, 255), ( 92, 77,  92, 255), ( 92, 77,  94, 255),
       ( 95, 77,  97, 255), ( 93, 75,  95, 255), ( 93, 77,  97, 255),
       ( 96, 80,  99, 255), ( 93, 80,  98, 255), ( 96, 80,  99, 255),
       ( 95, 82,  99, 255), ( 98, 81,  94, 255), (101, 83,  93, 255),
       (102, 80,  96, 255), ( 95, 78,  95, 255), ( 89, 76,  93, 255),
       ( 93, 78,  93, 255), ( 90, 77,  92, 255), ( 89, 76,  93, 255),
       ( 92, 78,  90, 255), ( 98, 81,  94, 255), ( 94, 77,  94, 255),
       ( 93, 75,  93, 255), ( 92, 77,  92, 255), ( 96, 81,  96, 255),
       ( 98, 77,  90, 255), ( 97, 75,  93, 255), ( 97, 74,  95, 255),
       ( 98, 76,  96, 255), ( 95, 75,  93, 255), ( 96, 76,  94, 255),
       ( 92, 78,  90, 255), ( 90, 78,  90, 255), ( 92, 78,  90, 255),
       ( 92, 78,  90, 255), ( 92, 78,  90, 255), ( 92, 78,  90, 255),
       ( 92, 78,  90, 255), ( 87, 73,  88, 255), ( 87, 72,  89, 255),
       ( 87, 72,  91, 255), ( 92, 78,  90, 255), ( 93, 79,  92, 255),
       ( 91, 77,  89, 255), ( 93, 79,  92, 255), ( 92, 78,  90, 255),
       ( 92, 78,  90, 255), ( 92, 78,  90, 255), ( 91, 77,  89, 255),
       ( 91, 77,  89, 255), ( 92, 78,  90, 255), ( 92, 77,  92, 255),
       ( 92, 77,  92, 255), ( 92, 77,  92, 255), ( 92, 78,  90, 255),
       ( 91, 77,  89, 255), ( 93, 79,  92, 255), ( 92, 78,  89, 255),
       ( 92, 78,  90, 255), ( 92, 78,  90, 255), ( 92, 78,  90, 255),
       ( 92, 78,  90, 255), ( 92, 78,  90, 255), ( 91, 77,  89, 255),
       ( 87, 73,  86, 255), ( 87, 74,  84, 255), ( 87, 73,  86, 255),
       ( 87, 72,  89, 255), ( 87, 72,  89, 255), ( 87, 72,  89, 255),
       ( 89, 74,  89, 255), ( 92, 78,  90, 255), ( 92, 77,  92, 255),
       ( 94, 78,  90, 255), ( 91, 74,  87, 255), ( 94, 78,  90, 255),
       ( 87, 73,  86, 255), ( 92, 77,  92, 255), ( 92, 77,  94, 255),
       ( 92, 77,  94, 255), ( 94, 76,  96, 255), ( 90, 71,  91, 255),
       ( 91, 75,  95, 255), ( 87, 72,  91, 255), ( 87, 72,  91, 255),
       ( 89, 73,  92, 255), ( 87, 72,  91, 255), ( 89, 73,  92, 255),
       ( 87, 72,  91, 255), ( 87, 72,  89, 255), ( 92, 77,  94, 255),
       ( 85, 73,  88, 255), ( 87, 73,  86, 255), ( 87, 74,  84, 255),
       ( 90, 73,  86, 255), ( 89, 74,  89, 255), ( 87, 72,  89, 255),
       ( 87, 72,  91, 255), ( 85, 72,  89, 255), ( 81, 73,  88, 255),
       ( 79, 74,  86, 255), ( 75, 71,  81, 255), ( 74, 70,  79, 255),
       ( 75, 70,  82, 255), ( 73, 71,  82, 255), ( 73, 71,  82, 255),
       ( 74, 69,  81, 255), ( 74, 67,  77, 255), ( 76, 67,  77, 255),
       ( 76, 62,  72, 255), ( 80, 66,  79, 255), ( 80, 66,  79, 255),
       ( 79, 65,  78, 255), ( 78, 66,  79, 255), ( 80, 66,  79, 255),
       ( 83, 68,  81, 255), ( 84, 70,  82, 255), ( 84, 70,  81, 255),
       ( 81, 72,  82, 255), ( 78, 70,  82, 255), ( 75, 70,  82, 255)],
      dtype=[('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'u1')])

getting prepared for reshaping:


In [8]:
frame[0, :].shape[0] * 4, frame[0, :].view(dtype=dtype).view(dtype=np.uint8).shape


Out[8]:
(5120, (5120,))

In [9]:
frame.ravel().shape[0] * 4, frame.ravel().view(dtype=dtype).view(dtype=np.uint8).shape


Out[9]:
(3686400, (3686400,))

In [10]:
frame_np = frame.view(dtype=dtype).view(dtype=np.uint8) # convert to UINT8
frame_np = frame_np.reshape((cam.shape[0], cam.shape[1], 4)) # de-raveling
frame_np = frame_np[:, :, :3] # removing alpha
frame_np = frame_np[:, :, ::-1] # BGR > RGB
print('frame_np as size', frame_np.shape)
print ('Min, max=', frame_np.min(), frame_np.max())


frame_np as size (720, 1280, 3)
Min, max= 0 235

and finally displaying it


In [11]:
%matplotlib inline
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(15,8))
ax.imshow(frame_np/255.)


Out[11]:
<matplotlib.image.AxesImage at 0x110723358>

In [12]:
def grab(cam):
    frame = np.asarray(cam.snap_picture())
    dtype = [('f0', np.uint8), ('f1', np.uint8), ('f2', np.uint8), ('f3', np.uint8)]
    frame_np = frame.view(dtype=dtype).view(dtype=np.uint8) # convert to UINT8
    frame_np = frame_np.reshape((cam.shape[0], cam.shape[1], 4)) # de-raveling
    frame_np = frame_np[:, :, :3] # removing alpha
    frame_np = frame_np[:, :, ::-1] # BGR > RGB
    return frame_np


print('frame as size', grab(cam).shape)


frame as size (720, 1280, 3)

In [13]:
%timeit grab(cam)


54.1 ms ± 5.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [14]:
import time
t0 = time.time()
N = 32
for i in range(N):
    _ = grab(cam)
t1 = time.time()
print('Executed = {:d} grabs'.format(N),
                  'in {:.1f} seconds'.format(t1-t0),
                  ' ({:.1f} fps)'.format(N/(t1-t0)))


Executed = 32 grabs in 1.6 seconds  (19.6 fps)