Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. # coding: utf-8
  2. """
  3. ディスプレイの輝度を計測するため,入力されたグレースケール値 (8ビット) に対応する背景を表示する.
  4. """
  5.  
  6. from __future__ import division, unicode_literals, print_function
  7. import numpy as np
  8. from PIL import Image
  9. from psychopy import visual, event
  10.  
  11. FULLSCR = True
  12. DEFAULT_MESSAGE = 'Input brightness'
  13. MESSAGE_COLOR = (1, -1, -1)
  14. CONFIRM_KEY = 'return'
  15. ESCAPE_KEY = 'escape'
  16.  
  17.  
  18. class Rectangle(object):
  19. def __init__(self, win):
  20. self._win = win
  21. self._size = win.size # in (W, H)
  22. self.set_brightness(128)
  23.  
  24. def set_brightness(self, brightness):
  25. arr = np.tile(brightness, tuple(reversed(self._size))) # in (H, W)
  26. img = Image.fromarray(np.uint8(arr))
  27. self._rect = visual.ImageStim(win, img)
  28. self.current_brightness = brightness
  29.  
  30. def draw(self):
  31. self._rect.draw()
  32.  
  33.  
  34. def check_brightness(win):
  35. msg = visual.TextStim(win, DEFAULT_MESSAGE, color=MESSAGE_COLOR)
  36. rect = Rectangle(win)
  37. key_list = [str(i) for i in range(10)] + [CONFIRM_KEY, ESCAPE_KEY]
  38. inputted_digits = []
  39. while True:
  40. rect.draw()
  41. msg.draw()
  42. win.flip()
  43.  
  44. keys = event.getKeys(keyList=key_list)
  45. if not keys:
  46. continue
  47. else:
  48. key = keys[0]
  49.  
  50. if key == ESCAPE_KEY:
  51. break
  52. elif key == CONFIRM_KEY:
  53. if inputted_digits:
  54. new_brightness = ''.join(inputted_digits)
  55. rect.set_brightness(new_brightness)
  56. msg.setText(DEFAULT_MESSAGE)
  57. inputted_digits = []
  58. print('current brightness: {}'.format(rect.current_brightness))
  59. else:
  60. inputted_digits.append(key)
  61. inputted_digits = inputted_digits[-3:]
  62. msg.setText(''.join(inputted_digits))
  63.  
  64.  
  65. if __name__ == '__main__':
  66. win = visual.Window(units='pix', allowGUI=not(FULLSCR), fullscr=FULLSCR)
  67. check_brightness(win)
  68. win.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement