3.1 Graphical User Interface Mocks Up

Figure 3.1.1 gives an overview of the navigation functionality of the proposed system while Figure 3.1.2 is a screenshot of main graphical user interface. The user can decide to change the background from black to white or from white to black.

Figure 3.1.1: Navigation
Figure 3.1.2: Graphical User Interface

More Use-cases Screenshots from the Application

Handscript Shapes Detection
Real Image Shapes Detection
Real-Time (Camera) Shapes Detection-1
Real-Time (Camera) Shapes Detection-2
Real-Time (Camera) Shapes Detection-3
Real-Time (Camera) Shapes Detection-4

3.2 Approach to Shape Detection

While there can be many different kinds of shapes in an image, some of them are basic geometry shapes such as, triangles, rectangles and circles, others can be more complicated, like cars, trees, even humans. For this work, I am focusing on the basic geometric shapes, as any complicated shape is the combination of fundamental shapes. Furthermore, I divide these basic shapes into two categories, curves and polygons (cf. Figure 3.1.2).

The main intent of this theory is called from general to specific. It means that the first thing is to build a wide concept, and then divide it into several sub-concepts based on the specific features. A good example of this is the polygon family. The polygon is a wide concept, with the sub-concepts of triangle, quadrangle, pentagon and so forth based on the number of sides or vertices. Also, quadrangle is a wide concept that includes the sub-concepts of parallelogram and trapezoid. The entire shape family tree is shown in figure 3.2.1.

Overall, for any shape whether curve or polygon, the basic detection workflow could be summarized in the steps shown in figure 3.2.2.

3.3 Environment Configuration

I used C++ integrated with the OpenCV library to design and develop this program on the Qt platform. This project was initially done in 2018. Qt supports MingGW and Microsoft Visual Studio as two significant compilers. Configuring the library using MinGW is complicated because it needs to use CMake to convert the source files into executable files. Six years have passed, and the library and software are still updating with time. When I opened this project, my program did not deploy and execute. The primary reason is that some libraries and plugins have been outdated. I remembered that the Qt version I used in 2018 was 5.5, and the OpenCV version was 3.1.0. The Qt has been upgraded to 6.5, and OpenCV has been upgraded to 4.2. Therefore, I tried to fix these conflicts, and I found that MVS was an excellent compiler and could integrate the OpenCV source library automatically on Qt. I just mounted the external library path in Qt onto the OpenCV library. The amazing thing happens, and the program works. Six years passed, and it still works! In conclusion, I suggest using MSV as the default compiler when using any external library.