Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- """
- ディスプレイの輝度を計測するため,入力されたグレースケール値 (8ビット) に対応する背景を表示する.
- """
- from __future__ import division, unicode_literals, print_function
- import numpy as np
- from PIL import Image
- from psychopy import visual, event
- FULLSCR = True
- DEFAULT_MESSAGE = 'Input brightness'
- MESSAGE_COLOR = (1, -1, -1)
- CONFIRM_KEY = 'return'
- ESCAPE_KEY = 'escape'
- class Rectangle(object):
- def __init__(self, win):
- self._win = win
- self._size = win.size # in (W, H)
- self.set_brightness(128)
- def set_brightness(self, brightness):
- arr = np.tile(brightness, tuple(reversed(self._size))) # in (H, W)
- img = Image.fromarray(np.uint8(arr))
- self._rect = visual.ImageStim(win, img)
- self.current_brightness = brightness
- def draw(self):
- self._rect.draw()
- def check_brightness(win):
- msg = visual.TextStim(win, DEFAULT_MESSAGE, color=MESSAGE_COLOR)
- rect = Rectangle(win)
- key_list = [str(i) for i in range(10)] + [CONFIRM_KEY, ESCAPE_KEY]
- inputted_digits = []
- while True:
- rect.draw()
- msg.draw()
- win.flip()
- keys = event.getKeys(keyList=key_list)
- if not keys:
- continue
- else:
- key = keys[0]
- if key == ESCAPE_KEY:
- break
- elif key == CONFIRM_KEY:
- if inputted_digits:
- new_brightness = ''.join(inputted_digits)
- rect.set_brightness(new_brightness)
- msg.setText(DEFAULT_MESSAGE)
- inputted_digits = []
- print('current brightness: {}'.format(rect.current_brightness))
- else:
- inputted_digits.append(key)
- inputted_digits = inputted_digits[-3:]
- msg.setText(''.join(inputted_digits))
- if __name__ == '__main__':
- win = visual.Window(units='pix', allowGUI=not(FULLSCR), fullscr=FULLSCR)
- check_brightness(win)
- win.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement