Hallo Habr! Das letzte Mal schrieb ich über ein Projekt zur Röntgeninspektion von Leiterplatten . Jetzt haben wir große Fortschritte gemacht, es gibt einen funktionierenden Prototyp der Software sowie "mit einem Stock gestochen" in Elbrus. Ich möchte Ihnen von dieser Erfahrung erzählen.

Intro
Zu Beginn des Projekts konnten wir zusätzliche Mittel finden. Die Hauptbedingung war die vollständige plattformübergreifende Software, einschließlich der Unterstützung für inländische Prozessoren. Zu dieser Zeit war Elbrus 8C die produktivste Option für Desktop-Computer (8CB ist noch nicht erschienen). Wir haben zwei Elbrus 801-RS-Stationen direkt von MCST gekauft. Jetzt sind ihre Kosten auf der Website angegeben, vor einem Jahr waren sie etwas teurer.
, – . NDA, ( ). , – . . / , .
2020 – : (, ). Linux. , – . .
– , Fly , . , , .
– USB , . - .
. 4.0, 5.0rc2 – , «» . VLIW . .
UPD: 6.0. C++20 Linux, — .
++, 14- , CUDA Vulkan , OpenGL AMD . – OpenGL 3.1, QT 5.11.
– - . , «» , . .
, (titovmaxim, Unicore Solutions)
– . – . . TLDR: .
– . Ethernet 1 , GigE Vision. , ( Aravis) , .
, , 1 , . , . . , , . .
OpenGL, .. , . , , , , , . OpenGL, CUDA, .
3000x3000 16 (AMD R5) ~33 . , -. , . , x86 GeForce RTX 2070 Max-Q ~2, .
– RS232, Web UVC, .
Qt 5.11 QML . . , "-", . , , 5.11 «» .
, C++ 14. C++ QML , c Flow.
Flow
— , boilerplate . ++, , , , . , , OpenGL, « ». ( update) / , ( ), Qt. – subscribe/unsubscribe , , :) ReactiveX, , .
- ( C++ ), QMetaObject. , QML (, WPF C#), , QML QVector diff’ ( QAbstractItemModel), / .
C++ 17. C++ 14 , , . , . , GCC MSVC. auto . this . , . , ;)
. . , . , . , -fnon-call-exceptions .
, "" Linux x86 . .
OpenCV
, «» - OpenCV 3.2. , “” – . . OpenCV 8 (1300 ) Intel core i7 (2600 ) / openCV:
| , | 5.0rc2/ -8/ OpenCV 3.2 | 8.1/ -8/ OpenCV 3.2 | 1.6/ Intel Core i7 7700/ OpenCV 3.2 | Windows 10/ Intel Core i7 9750H/ OpenCV 3.2 | Windows 10/ Intel Core i7 9750H/ OpenCV 4.4 | |
|---|---|---|---|---|---|---|
| 5x5, 3000x3000, 16S | 35 | 334 | 99,7 | 94 | 105,9 | |
| 5x5, 3000x3000, 16U | 244 | 280 | - | 98 | 106,5 | |
| 5x5, 3000x3000, 32F | 32 | 271 | 23,9 | 24 | 11,4 | |
| 5x5, 3000x3000, 16S | 15,3 | 257 | 36,3 | 35 | 5,7 | |
| 5x5, 3000x3000, 16U | 184 | 251 | - | 12,5 | 40 | |
| 5x5, 3000x3000, 32F | 14,5 | 222 | 8,1 | 7,7 | 6,2 |
OpenCV EML (. , VLIW ). EML . , . – .
– , 2 (16S) i7, 2 (32F). OpenCV 20 . , 16U .
. (, ) , , . .
– , - .
, . .