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.