aboutsummaryrefslogtreecommitdiffstats
path: root/random241.py
blob: 47bdff74af1fbccc761ff21bee2b8e9343d063c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python2

import cv
import time
import numpy as np
import logging
import random241arg as arg
import random241sensor as sensor
import random241osc as osc

showStream = False
stop_key = 0
capture = True
camNumber = 1
time_delta = 60 * 60 / 2
logging.basicConfig(filename='random241.log',
                    format='%(asctime)s %(message)s',
                    filemode='w', level=logging.INFO)
last_time = time.time()

# Read parameters
params = arg.read_params()
# Define which cam to use, etc.
#cam = sensor.capture(params['-c'], showStream)

# Get frame and size information from camera
cam = cv.CaptureFromCAM(camNumber)
frame = cv.QueryFrame(cam)
if frame is not None:
    frame_size = cv.GetSize(frame)
    logging.info('Grabbing random numbers from: %dx%dpx.',
                 frame_size[0], frame_size[1])

    # Get matrix with values from frame
    mat = cv.GetMat(frame)
    frame_values = np.asarray(mat)
    # Create grayscale image
    gray_values = sensor.bgr2gray(frame_values)

    # Define the time to run the test
    time_delta = time_delta + time.time()

    # Setup OSC
    osc.connect_to_server("127.0.0.1", 57120)

    # Main loop for accessing the camera and calculating random numbers from it
    #while True:
    while time_delta > time.time():
#        last_time = time.time()
        img = cv.QueryFrame(cam)
        # Get a numpy array with rgb values
        mat_from_frame = sensor.frame_to_mat(img)
        gray_mat = sensor.bgr2gray(mat_from_frame)
        randomness = sensor.harvest_entropy(gray_mat)
        if randomness is not None:
            delta = time.time() - last_time
            last_time = time.time()
            osc.send_msg(delta, randomness)
        if showStream:
            while stop_key != ord("q"):
                cv.ShowImage("Americium 241", img)
                key = cv.WaitKey(2)

    #time.sleep(5)
    #random241sensor.set_capture(False)
else:
    logging.error('Connect camera %d first!', camNumber)