Modifikacija Python API-a pomoću ctypes library-a
Detalji posla
- Back-end Razvoj
U skeneru histoloških preparata koji razvijamo koristimo ToupTek Photonics kameru, a za upravljanje kamerom koristimo Python API-a te firme. Ovdje je link na SDK kamere.
Sama kamera ima dva načina "slikanja": "pull" i "push" mode. Mi trenutno koristimo "pull" mode u kojem pokrenemo kameru i definiramo prostor u memoriji koji se onda refresha sa novim slikama brzinom fps-a kamere.
Taj način rada je ok, no glavni nedostatak je da pri dolasku na novu poziciju (za “skeniranje” preparata je potrebno uzeti matricu slika), uvijek moramo čekati još jedan frame jer je prvotni frame možda uzet dok smo se kretali do te nove pozicije. Pri tome možemo izgubiti do 6 milisekundi. Ne čini se puno, ali na 200.000 slika je značajan gubitak (toliko je u prosjeku potrebno uzeti slika prilikom skeniranja jednog preparata).
Iz tog razloga je potrebno implementirati "push" metodu s kojom bi mogli učitati podatke sa senzora točno u trenutku kada želimo. Problem je u tome da tu metodu developeri nisu implementirali u Python API-u. No, implementirali su ju u C++ API-u, a sama funkcija se nalazi u .so (.dll) shared library-u tako da ju je sigurno moguće implementirati i u Pythonu.
Za rješavanje tog problema bi trebalo dobro poznavanje Pythona (naglasak na ctypes library), ali i C++ jezika.
Važno: U SDK-u se nalazi sample: "demopush.cpp" u kojem je pokazano kako implementirati push mode u C++. To jako olakšava posao. Meni bi rješavanje tog problema oduzelo previše vremena, no vjerujem da netko tko je vješt u C++ bi to mogao riješiti u jednom danu. Dobro je pogledati i dokumentaciju koja se također nalazi u SDK-u.
Uspješno riješen problem je ako kamera uspije uzeti 200.000 slika bez deadlocka. Preporučam izoliranje kamere u odvojen thread.
Budžet: 1200kn
Da li ste poslodavac? Postavite sličan posao