Migracja projektu qmazda z biblioteki OpenCV do OpenCV 4

Migration of the qmazda project form OpenCV to OpenCV 4

Autor: Emilian Gałązka

Opiekun pracy: prof. dr hab. inż. Piotr Szczypiński

Rodzaj pracy: praca dyplomowa inżynierska

Data obrony: 2021-03-15

Streszczenie

QMaZda to program służący do przetwarzania obrazów, którego budowa trwa od ponad dwudziestu lat. Części istniejącego kodu zostały napisane przy użyciu biblioteki OpenCV 2 i jej API języka C. OpenCV zaprzestało rozwój funkcji opartych na języku C i wiele starych funkcji jest niekompatybilne z najnowszym wydaniem OpenCV. Proces ulepszania programu QMaZda został przeprowadzony poprzez znalezienie wszystkich plików źródłowych zawierających odniesienia do OpenCV oraz przepisanie kodu tak, aby pasował do nowego API. Oryginalna wersja kodu napisanego w C została zachowana, lecz jest zablokowana poprzez przełącznik zdefiniowany w pliku konfiguracyjnym programu. Zabieg ten umożliwia deweloperom szybką kompilację programu przy wykorzystaniu wybranego API. Sam proces przepisywania kodu na nową wersję OpenCV wymagał wielu kompilacji programu i porównywania wyników predefiniowanych testów. Ostatecznie, wyniki testów były identyczne w obu wersjach, co oznaczyło sukces przedsięwziętej pracy.

Abstract

Some parts of QMaZda’s code use the OpenCV library's old C API and OpenCV 2 functions. OpenCV discontinued the development of their C-based functions. As a result, all code written using OpenCV's C API is deprecated and no longer receives any updates. Many of the existing functions are also no longer compatible with the most recent releases of the library. The update process of QMaZda was conducted by locating all source files containing references to OpenCV and rewriting the code to match the new API. The original C API was kept, but it is locked behind an if-switch in the program's configuration file. This allows developers to quickly compile the program using either of the API and compare the results. The updating process required multiple compilations of the project and comparison of results between ran tests. In the end, the output from the updated program was precisely the same as that of the original version. This marked the success of the undertaken work.