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)
Content source: dashesy/pyavfcam
Similar notebooks: