Solution
Our team's solution for this project is a Windows Desktop Application that uses OpenCV Object Detection Framework
to find the alignment dot in an image from NPOI's camera. Once found, the application will be able to find the
necessary adjustments required to align the mirrors with the center of this dot.
Here is the final application
Brief Overview
This application utilizes two threads for the Back-end image processing and the Front-end user interface.
NPOI's camera sends a series of images to the computer in some directory. Using the input path field, our
program pulls in the latest image from that directory at a specified frame rate and processes it with OpenCV.
For each image frame, OpenCV searches the image for the brightest cluster of pixels, which is the alignment dot.
Once the bright mass of pixels is found, contours are formed around the dot and the perfect center is calculated.
Our application then finds the necessary adjustments to move the crosshair to the calculated center of the dot.
These measurements are displayed in the measurement section.
Additional Features
-
The user can save the current image state as well as the measurements associated with it to the specified
Output path for logging purposes.
-
The user is able to calibrate the crosshair by clicking anywhere in the displayed image to set it. Once
set, a small indicator dot appears marking the new crosshair location. Additionally, the x and y coordinates
of this new location is shown in the measurements section. Once set, the user can choose to save the new
location or revert to the previous location.
-
The user is able to clear out the input folder of all image files. This is helpful in case the drive gets
filled with images.
-
The user can specify the time in between frames. This is helpful for taking load off of the CPU as well as
adding some modularity for whatever frame rate the camera takes pictures.
-
The start/stop button allows for the user to pause the Back-end from pulling in new images to process and
display them.
-
The status indicator in the bottom left of the display will display necessary information to the user
about what the program is doing. This can include the running status, alerts, success messages, etc.
-
The top left options offer additional features such as changing themes, referring to our help menu, or viewing
our licensing information.