Introduction: The EyeWriter 2.0

The EyeWriter is a low-cost eye-tracking apparatus + custom software that allows graffiti writers and artists with paralysis resulting from Amyotrophic Lateral Sclerosis to draw using only their eyes.

The original design, as shown here, featured a pair of glasses as the basis for the eyewriter design:


Since that first video, we've been hacking on and developing the project, and we have a new design, which we've called "eyewriter 2.0" which improves the accuracy of the device, and allow for people who's heads are moving slightly to also use an eye tracker. The original eyewriter, designed for a paralyzed Graffiti artist TEMPT1, is designed to be worn on a completely motionless head. The 2.0 design, which uses a camera and LED system mounted away from the head, can be used by people whose heads are moving slightly, such as MS patients, and people who wear glasses, etc.


This eyewriter system is cheap, and completely open source.  At the moment, it costs about 200$ in parts.  Traditional commercial eye trackers costs between $9000-$20,000, so this is a magnitude of order cheaper, and is designed to help anyone who wants or needs an eyetracker.

This fall, we've been showing off and demoing the 2.0 device -- check out the eyewriter 2.0 in action --  we even hooked it up to a robotic arm, to draw the artwork people make with their eyes: 

http://www.switched.com/2010/12/13/eyewriter-teams-up-with-robotagger-to-print-kids-ocular-artwork/print/


(The 2.0 device was designed with help and input from Takayuki Ito, Kyle McDonald, Golan Levin and students of the eyewriter collab at Parsons MFADT.  Thanks also to the Studio for Creative Inquiry / CMU for hosting a session for development)



Step 1: Overview

The basic idea approach is that we'll be doing a few things. First, we'll be making LED illuminators for the sides of the screen and the center. Second, we'll be hacking the PS3 eye camera to get the vertical sync (when the frame of video is being taken) and to make it sensative to IR. Third, we'll be programming and building the arduino / cirucit to control the blinking. Finally, we'll setup the base for the system and go through the basics of the software.

From a technical perspective, the 2.0 system works by strobing 3 IR illuminators every frame. On even frames, it uses the center illuminator (located around the camera lens) and on odd frames it uses the 2 side illuminators. On even frames, the pupil appears bright, since the IR light is actually bouncing off the back of your eye, like red eye effect. On odd frames, your pupil appears dark. The difference between the two allows us to isolate and track the pupil in realtime. Additionally, the glints (reflections of the IR illuminators) of the dark frame are tracked, and these, plus the info on the pupil, is calibrated to screen position using a least squares fitting process for an equation that provides a mapping of glint/pupil position to screen position.  

Step 2: Parts List

to begin with, we will need a fair number of parts to make this 2.0 device. Please see this image to get a sense of what we will be working with, as well as this detailed parts list pdf


see parts image


download detailed parts list:


Step 3: Software - OpenFrameworks & EyeWriter

The Eyewriter 2.0 requires a few pieces of software for building and running. In this step we will explain how to download and install an IDE, openFrameworks, and the eyeWriter software.


A. Integrated Development Environment (IDE)

  • An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development.


B. openFrameworks

  • Openframeworks is a c++ library designed to assist the creative process by providing a simple and intuitive framework for experimentation.


C. EyeWriter GitHub

  • GitHub is a web-based hosting service for projects that use the Git revision control system. It is a platform that allows people to exchange and share code.
  • Click Download Source on the top right menu.
  • Choose ZIP format.
  • After download is complete, unzip the file and place the "eyewriter-xxxxxxx" folder into openFrameworks "apps" folder.
  • Open the "apps/eyewriter-xxxxxxx/eyeWriterTracker/RemoteEyeTracker.xcodeproj" file to test that all installations are working correctly. The source code should load in your IDE software.
  • please be sure you're compiling for your current Operating System (the eyewriter software was originally compiled for OSX 10.5 so you might need to change compiling from 'base SDK' to 'OSX 10.6')
  • Build and Run the source code. The Tracking screen should load in video demo mode.

Step 4: Software - Camera & Arduino

We will also need to install two additional pieces of hardware. Macam will allow our PS3 eye camera to talk to our computer and the Arduino software will permit our physical hardware to communicate with our software.

Installing PS Eye drivers


For Mac:
For PC:


Arduino

  • Arduino is a tool for the design and development of embedded computer systems, consisting of a simple open hardware design for a single-board microcontroller, with embedded I/O support and a standard programming language
     
  • Download and install the Arduino software. http://arduino.cc/en/Main/Software
     
  • Follow the Getting Started tips if you're unfamiliar with the Arduino environment. http://arduino.cc/en/Guide/HomePage

Step 5: Load Arduino Sketch

In this step you will have to load the Arduino sketch for the PS eye camera to work. 

A. Arduino Sketch (Only for PS Eye)


  • Load the Arduino EyeWriter sketch "apps/eyewriter-xxxxxxx/eyeWriterTracker/StrobeEye/StrobeEye.pde" in the Arduino IDE software. This needs to be done in order that the eyewritter software can recognize the hardware.


  • With your Arduino board connected, upload the sketch to your board. Follow the Getting Started tips if you're unfamiliar with the Arduino environment.
    http://arduino.cc/en/Guide/HomePage


Step 6: Hardware: Power Adapter

Power Adapter
In this step you will cut the wire of a power adapter to power your breadboard
  • Clip off the connector jack of your 7.5 Volt Power Adapter. see image here


  • Use a Voltmeter to determine the positive and negative wires in the adapters exposed cord.


  • Using a short strip of red and black wire, solder the red wire to the adapters positive wire, and solder the black wire to the adapters negative wire.


  • Tape the exposed wires separately to keep positive and negative apart, then tape both together to ensure no wire is exposed.

Step 7: Hardware: Infrared LED's

IR LED's

  • Gather 8 Infrared (IR) Light-Emitting Diodes (LED) and a small round Printed Circuit Board (PCB).
     
  • To build LED arrays on the PCBs youll need to know the positive and negative ends of each LED. Generally speaking the longer leg of the LED is the anode (positive), and the shorter leg is the cathode (negative). see image here

    On most LEDs, there will also be a flat spot on the cathodes side of the lens.
    From overhead, take note of which direction the wire bond points relative to positive and negative.


  • Setup a circuit of 4 LEDs in series, in parallel with another set of 4 LEDs in series.see image here Clip the legs of the LEDs and solder them together.
    see image here


  • After soldering the LED legs together to form the circuit, solder about 2 feet (60 centimeters) of the red & green intercom wire to the LED circuits positive & negative ends.see image here


  • To test the LED PCB panel, build the circuit below. Look carefully to see if your IR LEDs are glowing a faint red. see image here


  • After confirming your IR LEDs are working, cover the back of the LED PCB panel with hot glue to keep all connections in place.


  • Repeat steps 1 - 5 above to create another LED PCB panel.


  • Using a larger round PCB, carefully drill press a hole into the center of the board. see image here


  • On the outer rim of the PCB, build a circuit of 4 parallel sets of 4 LEDs in series. The placement of the LEDs should allow the PS Eye camera to fit through snugly, without the camera blocking the LEDs. see image here


  • After soldering the LED legs together to form the circuit, solder wiring to connect all 4 positive ends together and all 4 negative ends together, putting all 4 LED sets in parallel. see image here


  • Solder about 2 feet (60 centimeters) of the red & green intercom wire to the LED circuits positive & negative ends.


  • To test the larger LED PCB panel, build the circuit below. Look carefully to see if your IR LEDs are glowing a faint red. see schematic here


  • After confirming your IR LEDs are working, cover the back of the LED PCB panel with hot glue to keep all connections in place.


Step 8: Hacking the PS Eye Camera - Preparing

In this step we will talk about how to take apart a PS Eye camera. This is necessary for you to be able to replace the lens on the camera, insert a infrared filter and wire the v-sync.

  • Get a PlayStation (PS) Eye camera. Use at your own risk because the camera will undergo modifications voiding its warranty.


  • Pry the four plastic screw caps off the back of the casing. see image here


  • Unscrew the four screws underneath where the screw caps were. Keep these screws because you will need some later.

  • With all four screws removed, pry off the back half of the casing. A flathead screwdriver and hammer, or a pair of pointed pliers should work. It requires significant force so be very careful not to damage anything inside or hurt yourself. see image here


  • Pull the cord aside and unscrew the two bottom screws beside the plastic holder. Keep these screws also. see image here


  • Remove the stand piece.


  • Unscrew the five screws around the board (two screws on the side, three screws on top). Keep these screws also. see image here


  • With all five screws removed, lift the board out of the front casing.


  • There are four microphones across the top of the board. Using wire cutters, clip off the microphones because they won't be used. see image here


  • Now the PS Eye board is prepared for wiring. The next steps will connect wiring to the Vertical Synchronization (V-Sync) and Ground joints on the PS Eye board.

Step 9: Hacking the PS Eye Camera - VSync

    In this step we will go through getting the v-sync off the camera. The v-sync is an electrical signal that comes from the camera which communicates the camera's refresh rate. Getting the camera's v-sync is crucial for this application to work because it is the only way we can match the camera's refresh rate to our infrared LED's.


  • Locate the Ground joint on your PS Eye board. Some PS Eye models have 5 joints near the lens mount (left image below), while some have 4 joints (right image below). If your model has 5 joints, the Ground joint is at the end closest to the lens mount. If your model has 4 joints, the Ground joint is also at the end closest to the lens mount, and twice as wide as the other joints. see image here
     
  • Cut about 2 feet (60 centimeters) of your 4-color intercom wire, and split the red and green from the black and white.
     
  • Split the red and green wire about 2 inches (5 centimeters) from one end, and strip off a small section of insulation at the end of the green wire. The green wire will be soldered to the PS Eyes Ground joint.
     
  • Clip the PS Eye board and green wire to a stand, and prepare to solder the green wire tip to the Ground joint. Use a piece of thick paper or cardboard in between the clips teeth to prevent scrapes on the board. see image here
     
  • Solder the green wire to the PS Eyes Ground joint.
     
  • Locate the V-Sync via on the board. Its the via circled in the image below. see image here. Attention: for more recent models of the PSEye camera (identified by the golden rim around the board) the VSync hotspot can be found on the front of the PCB, directly above the R19 resistor. see image here. Very REcently a newer model was also introduced in the market (v9.2)see how to identify it in this image and how to find the vSync spot in this image

  • Using a sharp knife, carefully pivot the knife tip on the via, and scrape off enough insulation coating to expose the metal contact below. see image here
     
  • The red wire needs to connect to the exposed V-Sync via, but the wire is too thick to be soldered neatly to the small via, so a 30 gauge wire will be used in between. Strip the ends of a 2 piece of 30 gauge wire.
     
  • Shorten the red wire, then solder one end of the 30 gauge wire to the end of the red wire. see image here
     
  • Before soldering the 30 gauge wire to V-Sync, a test should be performed to ensure all connections are correct. Build the circuit below. When the 30 gauge wire contacts the V-Sync via, the LED on the breadboard should flicker rapidly. see schematic here
     
  • Using thin 0.022 inch (0.56 millimeters) solder, carefully solder the 30 gauge wire to the exposed V-Sync via. To confirm, ensure the LED on the breadboard is flickering.

Step 10: Hacking the PS Eye Camera - Finishing

    In this step we will talk about how to put your camera back into one piece.

  • Unscrew the 2 screws holding the lens in place. Be careful not to break the fragile V-Sync connection. Detach the lens and keep both screws. see image here


  • Measure the square opening of the new lens mount. Cut a square from the filter sheet that is minutely smaller, and place it into the lens mount opening. see image here


  • With the filter in place, screw in the new lens mount. This will require some force, and one screw will go in at an angle because the new lens mount is a little too big for the board. see image here


  • Screw the new lens into the new lens mount on the board.


  • Use hot glue to cover and secure the V-Sync connection. see image here

Step 11: Full Circuit

    In this step we will show how to put together the circuit on the breadboard. This is the initial step to getting your Arduino to work with the eyeWriter software.

  • Build the circuit in the schematic below. see schematic here


  • After assembling the full circuit, the EyeWriter code is ready for live camera input. To switch from video demo mode to live camera mode, open the "apps/eyewriter-xxxxxxx/eyeWriterTracker/bin/data/Settings/inputSettings.xml", and edit the mode tag from 1 to 0.


  • Open the "apps/eyewriter-xxxxxxx/eyeWriterTracker/RemoteEyeTracker.xcodeprof" file, and Build and Run the source code. The Tracking screen should load with input from the PS Eye camera.

Step 12: Building a Wood Base

In this step we talk about building a portable wood base. It is interesting to build this so that your system can have a stable infrastructure to rest on. This makes it easier to test, calibrate, and work with the eyeWriter.

list of materials/parts needed for the base:
  • 2* 5/16 wood rods - approx. 20 inches long (A)

  • 2* 5/16 wood rods - approx. 1 1/2 inch long (D)

  • 1* 20 x 4 x 1/2 inch wood piece (B)

  • 3* 3 x 1 3/4 x 1 3/4 inch wood pieces (C)

  • drill bit with approx. diameter of the wood rods


Step 13: Using EyeWriter Software - Setup & Tracking Screen



    In this step we will take you around the eyeWriter software so that you can set it up.

  • Focus your camera by selecting Focus Screen on the first tab of the Computer Vision (CV) panel on the right. Rotate the lens of your camera until both video feeds look sharp, then deselect Focus Screen to return to the Tracking screen.

  • see image here

  • Select load video settings on the first tab of the right panel.
    see image here

    For PS3 Eye Camera:
    Ideally you want a bright, balanced image with minimal noise. An example image is shown below. Under the Webcam tab, slide the Gain and Shutter settings back and forth until the video looks ideal.



  • Under the Compression tab, if youre using a faster computer set your Frames per second (Fps) to 30. If youre using a slower computer set your Fps to 15.

Step 14: Using EyeWriter Software - Calibration Screen

    In this step we will go through the calibration setup.

  • Press spacebar for instructions, then spacebar again to start. Look at the red dots as they appear.


  • see image here


  • At the end of the calibration, the blue lines show any calibration inaccuracies. If there are any long blue lines, reset the calibration and press spacebar to start again.

Step 15: Using EyeWriter Software - Catch Me


  • Stare at the Catch Me box. As you stare, the boxs color will turn green.
  • see image here

  • When the box is fully green, it is caught and will appear somewhere else. Keep catching the boxes to test your eye-tracking calibration.

Step 16: Using EyeWriter Software - Drawing

LETTER DRAWING

  • Drawing mode starts paused by default. Before you start drawing, you can toggle the background grid on or off. The background grid can be toggled at any time by pausing.



  • To start drawing, switch to recording mode by staring at the paused button. As you stare, the button will turn green and switch to recording.



  • Drawing works with vector points. Stare at a place on the canvas for about a second to make a point. Your green eye-tracking circle needs to stay very still to make a point.



  • As you add points, they will stay connected by a stroke. You can create shapes and letters with these strokes. To make a new line, stare at the next stroke button.



  • To change what you are drawing, you can undo point which removes the last point drawn, or undo stroke which removes the entire last stroke drawn.



  • To save the current shape or letter and move on to the next one, stare at next letter. Your recently drawn letter will appear at the top of the screen, and you have a new blank canvas to draw a new letter on.



  • When you are finished drawing shapes and letters, stare at NEXT MODE to move on to Positioning mode.


POSITIONING

  • By default, all your letters are selected and ready for positioning. You can select individual letters by staring at Select Letter.



  • Select Rotate allows you to rotate your selection right (clockwise) and left (counter-clockwise).



  • Select Shift allows you to move your selection up, down, left and right.



  • Select Zoom allows you to zoom out and zoom in which shrinks and enlarges your selection.



  • Auto Place will place your letters side by side in the order you drew them.



  • When you are finished positioning your shapes and letters, stare at NEXT MODE to move on to Effects mode.

Step 17: Using EyeWriter Software - Typing

  • Stare at whichever key you wish to press. As you stare, the keys color will turn green then flash blue.
  • see image here



  • When the key flashes blue, it has been pressed. You can see what youve typed at the top of the screen.



  • To speak the words typed, press the SPEAK key on the bottom left of the screen. On the middle right of the screen, SPEAK WORDS OFF/ON toggles the option to speak words automatically after they are typed and a space is entered.



  • Note the CAPS OFF/ON key on the bottom right of the screen. This toggles caps lock on and off, and is required to use the alternate characters on the number keys (! @ # $ % etc).


Step 18: Using EyeWriter Software - Pong


  • The goal is to block the ball from passing your paddle at the bottom of the screen.



  • The paddle will slide aligned with the x-position of your gaze. So you can stare at the moving ball and the paddle will slide horizontally in tandem.
  • see image here


Comments

author
praleshh1 made it! (author)2017-04-10

hey hi i am working eye writer project ..i didnt find sync hotspot on board which has golden rim around it .. they told as it had strictly above on R19 resister but there are two points about it but they are not jointed as per shown in diagram ...so help me to find out that point or is it vsync spot on copper plate above r19 resister or that two spots (holes) above it ......plz help me .....thank you

author
robotsin made it! (author)2017-03-27

We are making this project but are stuck on step 14, the calibration stage. We are not getting blue lines. Any tips?

We are running this on windows 7

author
robotsin made it! (author)robotsin2017-03-27

please respond by Sunday, April 2nd. Thanks!!!

author
DES-MINTIENDO made it! (author)2017-02-08

Hola me llamo José tengo ELA y ahora estoy usando este programa que se llama Enable Viacam, es muy facil de usar. Me gustaría que alguien me ayude a construir la ps3cam, para cuando ya no pueda mover la cabeza.

Aquí dejo vídeo demostración de como uso el programa

Yo vivo en Santa Cruz de Tenerife, Islas Canarias España

T saludo

author
IgnesiasT made it! (author)2017-02-06

Can anyone help me out big time and point me towards some resource that will teach me how to compile this for Linux?? I built it and want to donate to my hospital ICU, but i cant get it to run (because its compiled for mac), please help!

author
thachn2 made it! (author)2017-01-26

awesome

author
steve_smith2020 made it! (author)2016-10-03

Can you use any power adapter that outputs 7.5v? I found one that can output 7.5v, but it is 30W. Can I still use it? Thanks

author
TanmayD6 made it! (author)2016-08-13

||=== Build: release in openFrameworksLib (compiler: GNU GCC Compiler) ===|

..\..\..\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

||=== Build: release in eyewriter (compiler: GNU GCC Compiler) ===|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|324|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|325|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|328|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

..\..\..\libs\videoInput\include\videoInput.h|329|warning: converting to non-pointer type 'long int' from NULL [-Wconversion-null]|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:uuid.lib ' unrecognized|

||Warning: .drectve `-defaultlib:uuid.lib ' unrecognized|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: .drectve `-defaultlib:LIBCMT ' unrecognized|

||Warning: corrupt .drectve at end of def file|

||Warning: corrupt .drectve at end of def file|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetMouseButtonCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetCursorPosCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetKeyCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowSizeCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowCloseCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetScrollCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetDropCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowShouldClose'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowTitle'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowPos'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowPos'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetInputMode'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetInputMode'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWin32Window'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSwapInterval'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSwapInterval'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWGLContext'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowMonitor'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetVideoMode'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwInit'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowHint'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowHint'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowHint'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowHint'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowHint'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| more undefined references to `glfwWindowHint' follow|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwCreateWindow'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwMakeContextCurrent'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetFramebufferSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetMonitors'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwCreateWindow'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetWindowSize'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSetErrorCallback'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwTerminate'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetVideoModes'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowAttrib'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetWindowAttrib'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwRestoreWindow'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwIconifyWindow'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwPollEvents'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwSwapBuffers'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwMakeContextCurrent'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwWindowShouldClose'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwDestroyWindow'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwTerminate'|

..\..\..\libs\openFrameworksCompiled\lib\win_cb\openFrameworks.lib(ofAppGLFWWindow.o):ofAppGLFWWindow.cpp|| undefined reference to `glfwGetMonitors'|

||More errors follow but not being shown.|

||Edit the max errors limit in compiler options...|

||=== Build failed: 50 error(s), 217 warning(s) (4 minute(s), 2 second(s)) ===|

author
TanmayD6 made it! (author)2016-08-13

plz any one have bugs free code....i used OF 0.8.4 and CB 16.0 ...

author
nils90 made it! (author)2015-10-19

Help ! when I try to run and compile the workspace RemoteEyeTracker, it is written : error 'exit is not a member of 'std'. I have the correct version of openframeworks and I did exactly what you said in the post below.

I have a more recent version of codeblocks (13.12) but it doesn't have an influence does it ? Thank you for your answer.

author
nils90 made it! (author)nils902015-10-19

I have just download the version 10.05 of codeblocks but it still doesn't work. I got two messages : in function void initialize Quicktime ; 'exit' i not a member of 'std'.

Thank you for your help !

author
Ogvs made it! (author)Ogvs2015-10-19

http://forum.openframeworks.cc/t/new-code-blocks-10-05-quot-exit-is-not-a-member-quot-fix/4048

author
nils90 made it! (author)nils902015-10-20

ok it worked perfectly thank you. Yet I do have another problem : when I run and build the code, it is written : build completed, 0 errors. However, nothing happens : I get a message "executing C:/... EyeWriterB.exe". And when I try to open directly EyeWriterB.exe in the bin folder, nothing happens : the application does not open. Do you have an explanation ?

Thank you very much for your help !

author
Renah-LynI made it! (author)Renah-LynI2016-08-07

Hi, did the eyewriter work on ordinary webcam? If not, what type or brand of webcam did you use or just give us some specs. Thanks. Also can you share some video or steps you altered to come up with the same eyewriter function.

author
Renah-LynI made it! (author)Renah-LynI2016-08-07

Hi, did the eyewriter work on ordinary webcam? If not, what type or brand of webcam did you use or just give us some specs. Thanks. Also can you share some video or steps you altered to come up with the same eyewriter function.

author
davemohit95 made it! (author)2016-07-29

Hi, i am trying to make the eye writer project on my mac,i am currently using the OS 10.11,i installed the code from the site,and tried running it on the Xcode.I also changed the compiling settings from base SDK to OS 10.11. But i am still getting an error

" clang: error: no such file or directory: '/Users/Mohit/Desktop/OpenFrameworks/addons/ofxThread/src/ofxThread.cpp'

clang: warning: -lpthread: 'linker' input unused"

Do i need to use a different code for this project??

please provide me with a solution as this is my final year project.

author
Juancho_Cali made it! (author)2016-05-23

hello, please somebody could give some trick about to calibration? seems to be an impossible mission,, long blue lines always appear tru the screen... please some help about it. thx from Colombia.

author
CarlosmotaM made it! (author)2016-03-29

Hi, I´m from Brazil ,I followed your guide to my project. I
imitated very well,

but I face the problems now. Please give me answer.

First, I useda new
version of Eyewriter -OpenFrameworks (of_preRelease_v0061_win_cb_FAT)
CodeBlocks 12.11 . That version runned very well in my PC.

Second, in spite of my sucess.I can´t fine calibration. I
tried adjust the threshold(eye),gamma,constrast and brightness. However, got no sucess.

Third, the green ball seems to run out of control. I try
to adjust the IR LED lighting, but does not help me. What is the secret
to getting a perfect calibration? Is there any method that can guide us?

ew1.PNGew2.PNGew3.PNGew4.PNGew5.PNGew6.PNGew7.PNGew8.PNGew9.PNG
author
CharulB made it! (author)2016-01-28

I need the source code for IDE(openFrameworks). Can anyone please paste it here. Thank you for your help, it helps many students like me.

author
abhijeet2426 made it! (author)2015-09-28

need help||||||||||||||

please provide me the "M12 Board lens" alternative site for buying

author
Ogvs made it! (author)Ogvs2015-10-07

http://peauproductions.com/store/index.php?main_page=product_info&products_id=2

author
abhijeet2426 made it! (author)abhijeet24262015-10-07

please guide me for the

is this install on windows ?

or only osx supported ?

facing problem with installation of gui

author
Ogvs made it! (author)Ogvs2015-10-08

Here a new version of Eyewriter that works perfectly with Windows https://github.com/x15bmu/eyewriterb. Download it and unzip it. I'm using Windows 7 SP1. First download:

-OpenFrameworks (of_preRelease_v0061_win_cb_FAT) CodeBlocks 10.05 Additions for CodeBlocks (http://openframeworks.cc/setup/codeblocks/#additions)

Install CodeBlocks Unzip codeblocks_additions (there're 2 files on this folder)

Put "add_to_codeblocks_mingw_include" into "C:\Program Files\CodeBlocks\MinGW\include" Put "add_to_codeblocks_mingw_lib" into "C:\Program Files\CodeBlocks\MinGW\lib"

on this link they show you how to do it (http://openframeworks.cc/setup/codeblocks/#additions)

Install OpenFrameworks and put the folder in your Local Disc C. Put the eyewriterb-master folder in C:\of_preRelease_v0061_win_cb_FAT\apps

Launch the "RemoteEyeTracker.workspace" to see if it works.(eyewriterb-master\EyeWriterB 2_1_2\eyeWriterTracker)

if it show Unable to open ...\OpenFrameworks.lib.cbp Just change the location of the folders on eyewriterb-master,

for me it works like that C:\of_preRelease_v0061_win_cb_FAT\apps\eyewriterb-master\EyeWriterB 2_1_2

I put the files of eyeWriterTracker on EyeWriterB 2_1_2.

author
상훈김1 made it! (author)상훈김12016-01-06

Hi, I followed your guide to my project. I imitated very well,

but I face the problems now. Please give me answer.

First, I can't find "C:\of_preRelease_v0061_win_cb_FAT\apps" folder.

Where is it? I installed codeblock and mingw, addons, RemoteEyeTracker, eyewriterb-master.

However, I can't find that folder.

Second, I can't sure I installed openframeworks.

I add the addons into" \CodeBlocks\MinGW\include" and "C:\Program Files\CodeBlocks\MinGW\lib" as your guide.

I think compiler can't find file name of ofxDirList.cpp,ofxThread.cpp, ofMain.h, etc.....

You can see error in my image.

Third, I hope to develop using Visual Studio. Because, it is experienced tool for me.

I reinstalled about 2 ~ 3 times. I think maybe it cause to error.

How do I compile this projects?

This error is serious to me. Please give me answer.

noname01.bmp
author
Ogvs made it! (author)Ogvs2015-10-08

I forgot to mention that if you want the exe file without compiling you can just go to \eyewriterb-master\eyewriterb-master\Setup. After download the zip file.

author
abhijeet2426 made it! (author)abhijeet24262015-10-25

hi

which i IR led i have to use????

thank you

author
abhijeet2426 made it! (author)abhijeet24262015-10-15

which i have to buy ?????????there are many options

author
Ogvs made it! (author)Ogvs2015-10-16

The one they use on the Eyewriter 2.0, has 25mm focal length with a F2.5 aperture. I can't really tell you which one, but knowing the function of those parameters can help you choosing. The focal length give you more wide angle meanwhile the aperture is use to obtain light as much as possible even in poor lighting conditions. But i guess the 8mm or 12mm will be fine.This guy use the 8mm on a similar project http://jdarpinian.blogspot.com/2014/06/homebrew-oc... and it goes well for him.

And here the parameters for different type of M12 lens. http://www.uniel-denshi.co.jp/CCTV-LENSES/MINI-LEN...

author
abhijeet2426 made it! (author)abhijeet24262015-10-07

thanks Ogvs

author
anoopt1995 made it! (author)2015-12-11

eyewriter working

WIN_20151208_00_49_29_Pro.mp4
author
anoopt1995 made it! (author)2015-12-11

eyewriter

WIN_20151208_00_49_29_Pro.mp4
author
anoopt made it! (author)2015-11-09

got output in windows platform with our crew members nikhil,anjana,divyasree,angel,chippy

author
geekengineers made it! (author)geekengineers2015-11-14

Congratulations on successfully completing it!!

I am trying this out too and iam halfway stuck somewhere.

Could you suggest me a way to solder the v-sync of the ps3 eye camera(since its tiny,also what did you do instead(if anything new)) ? Also which eye-tracking software did you guys use? And could you give me detailed steps on how to calibrate the eye tracking software once everything else is ready?!

Thank you.

author
anoopt1995 made it! (author)anoopt19952015-12-11

if you have any doubt mail me anoopthulaseedharannair@gmail.com

author
Multimir made it! (author)2015-11-19

Hi guys i really like the project, and im thinking on building it, but i have a quick question before fully committing to the project. Can these glasses and this software be used for statistical analysis and experiments? Thank you so much in advance

author
AleexisM made it! (author)2015-11-18

need help with the potentiometers, I cant find the one you use, the lowest ones i can find is 1k ohms 0.5watts, I dont know if I can use those instead but the watt used in the eye writter is 3watts, will it efect if I use .5watts?

author
geekengineers made it! (author)2015-11-14

Could anyone suggest me a way to solder the v-sync of the ps3 eye camera(since its tiny,also what did you do instead(if anything new)) ?
Also which eye-tracking software did you guys use? And could you give me detailed steps on how to calibrate the eye tracking software once everything else is ready.
Help needed urgently.
Thank you !

author
HugoM24 made it! (author)2015-11-10

You have a replacement for the mosfet? Other than IRL3714ZSTRLPBF or IRL3714ZPBF because where I am there qulaquer shop even on the internet that sell and if necessary import does not arrive in time for what I need

author
nils90 made it! (author)2015-10-21

Help ! When i build the code, it does work : it is writen build completed no errors found. But when I run the code, nothing happens. Do you have an explanation ? Thank you very much

author
nils90 made it! (author)nils902015-10-21

I will try to precise my problem : when i run the code, it is writen

"Checking for existence: C:\of_preRelease_v0061_win_cb_FAT\apps\eyewriterb-master\EyeWriterB 2_1_2\bin\EyeWriterB.exe
Executing: "C:\of_preRelease_v0061_win_cb_FAT\apps\eyewriterb-master\EyeWriterB 2_1_2\bin\EyeWriterB.exe" (in C:\of_preRelease_v0061_win_cb_FAT\apps\eyewriterb-master\EyeWriterB 2_1_2\bin)
Process terminated with status 0 (0 minutes, 0 seconds)"

And when I try to open the EyeWriterB.exe directly in the folder bin, it does also not work. Any explanations ? Sorry to insist on that problem, but it is very important for me

OS : Windows 7

author
Ogvs made it! (author)Ogvs2015-10-22

In the menu bar go to Build --> Select target --> check debug.This option allow you to see all the steps (errors include) in a console, while the program is running. After this, build the program again and look at what the console is showing.

But i'm pretty sure the problem, is that you're in video mode, it has to be in live mode. to change that go to: C:\of_preRelease_v0061_win_cb_FAT\apps\eyewriterb-master\EyeWriterB 2_1_2\bin\data\Settings

Open inputSettings.xml change <mode>1</mode> to <mode>0</mode>, save it.

Try to run the program again.

author
abhijeet2426 made it! (author)abhijeet24262015-10-29

which IR Leds i have to use?

thank you

author
Ogvs made it! (author)Ogvs2015-10-30

HSDL-4220, check the parts list

author
abhijeet2426 made it! (author)abhijeet24262015-11-03

s but these are unavailable here

currently i m building with normal ir leds

author
nils90 made it! (author)nils902015-10-22

Yes it did work thank you ! I do have three more questions :

1. Me and my friends are working on a project to control a radio-controlled car thanks to the movement of the eye. That's why we want to understand the code you made to extract the information which could be useful for us. Is there a documentation of the code ? I saw that there were few comments in the code, but only with that it is difficult to understand it.

2. I am currently using the webcam of my computer. But I think it is badly calibrate because the images I get on the screen are not very relevant (cf. photo below). Is that possible to use the webcam of my computer and calibrate it properly ? Or is it compulsory to do all the stuff with the PS3 webcam even if we don't need very precise results ?

3. I got a little problem because the problem doesn't end by itself when I close it. I have to do ctrl+alt+suppr to end it. Is there a way to correct this bug ?

Again, thank you very much for your help, I really like this project and It would be great if I succeed in making it work properly !

Capture ecran.PNG
author
Ogvs made it! (author)Ogvs2015-10-26

I didn't make the code, in the link i provide, Ben Mattinson did those modifications.

To understand the logic behind the code, you have to read, some paper about eye tracking and gaze tracking based on corneal reflections (glint) and pupil center. Here one: (https://onedrive.live.com/view.aspx?resid=10CDA584...)

The code is based on bright pupil and black pupil effect, that's mean you have to use IR light. You won't have good results with your built in webcam. To work with the program, it's necessary to do those modifications on the PS3eye or any other usb webcam.

Well, i don't have this problem on mine, it's closing perfectly. Try to run the program on debug instead of release.

And google is a great tool, you'll find a lot info. about what you need for your project. And good luck !!

author
nils90 made it! (author)nils902015-10-22

Ok thank you : I was indeed in the video mode, now here is what I got. Am I supposed to get that ? Sorry but I want to be sure that the software works before starting to construct the eyewriter. Thank you for your help.

Capture.PNG
author
Ogvs made it! (author)Ogvs2015-10-22

The webcam isn't turn on. Again go to InputSetting.xml, if you're using the built in webcam change those parameters like this.

<grabberType>0</grabberType>

<deviceId>0</deviceId>

Some advice, setting the build target to Debug like i said before, the message log will help you see the status of the program, and check the README file here https://github.com/x15bmu/eyewriterb

author
abhijeet2426 made it! (author)2015-11-03

how to run these software

using eyewriter software drawing

typing etc

author
yxu08 made it! (author)2015-10-17

I need help! I'm in China and I'm trying to make one for my former teacher, although I knew very little about digital stuff. I'm buying parts from local digital market in China. Can I replace IR Led 875nm with 850nm? Can I replace rheostat 25Ohm-3w with rheostat 33Ohm-5w. Can I replace the 24 AWG wire with 22 AWG wire? Thank you!

About This Instructable

387,704views

577favorites

License:

More by thesystemis:The EyeWriter 2.0
Add instructable to: