I’m writing a game where the user interacts with a TV using a laser. To do so, the user points the camera to encompass the TV, the game displays a full screen ChArUcoBoard so OpenCV can find where the TV is, then I detect where the laser hits the TV by the increased brightness along with HoughCircles.
I have a prototype of this working already, but I’m new to OpenCV and would like to get the help of an expert to solve some problems in a better way.
The camera isn’t necessarily directly in front of the TV, the TV doesn’t necessarily fill the camera view, and the camera or TV may be slightly rotated. Taking that into account, I need to know where the laser hit on the game screen. For example, 0,0 is upper left corner of the screen and 1,1 is lower right corner of the screen. Laser hits that didn’t hit the screen at all can be reported outside as less than 0 or more than 1.
HoughCircles has a lot of parameters / numbers I don’t understand and I only have it working for my own screen. I’d like a more robust way to determine where the laser is. For example, a calibration step that shows a black screen, has the user hit the screen with a laser several times, and auto-determining what numbers to use. The numbers can be customized for each user’s session based on that calibration step.
Once the game starts, I’d like to be sure the game visuals don’t register as laser points. This part of the contract isn’t really coding, but I’d like to get some kind of strategy down to avoid this, even if it’s just desaturating the color of the laser the user is using.
The game engine I’m using is Unity and it would be preferable if you could work inside Unity. I’m available to assist with Unity setup.
I expect this contract to take about 2 weeks. Part-time, remote, is OK. This is a paid short-term contract, rate negotiable.
You can reach me at firstname.lastname@example.org