The technical heart of the installation is the blink detection mechanism. This is achieved by continuously shooting a close up of the spectator’s face. The camera (that can be located anywhere as long as it is able to capture the face of the spectator) is connected to a computer that processes the images in real time. After finding the face (using openCV Haar-classifier library, integrated in openFrameworks), the location of the eyes is inferred (face proportions). Finally, blink detection is performed by simple frame differencing in that region of interest*. Efficient and robust detection of the blink is possible even in dimly lit environment by using an infrared light source.
Each time a blink is detected, the information is send wirelessly (Bluetooth modem) to a microcontroller (an Arduino Mini). The microcontroller then activates a small servo-motor that press the channel button on the TV remote controller. We use a universal remote controller to “jam” the channels, so the installation can be easily prepared on any TV set. This remote is inserted below the “bluetooth zapping module” (see image on the right) and both the remote and the zapping module are hidden somewhere nearby (for instance, under the table). On the other hand, the original remote controller is left visible over the table, perfectly accessible to the spectator. Even though the zapping module is invisible, the spectator can hear the characteristic robotic sound produced by the servo-motor as it presses the buttons on the remote. Since this sound perfectly correlates with blinking, it gives the spectator a direct clue about what is happening. Additionally, it produces the gives the eerie feeling of being somehow part of the machine. The zapping module is a small box containing the servo-motor, a microcontroller and a bluetooth modem. It is battery powered (batteries last several days without recharging). The top of the box is a semi-reflective mirror that is illuminated from the inside each time a blink occurs.
(*) Many thanks to Jacqueline Steck for sharing initial code for blink detection.