αααα»αααΊααΆα’ααααααααΎαααααααααααααα·ααααα·ααΆααα½αα
ααααα·αααΎα’αααααΆαα’αααΈαα½αααΌα
ααΆ "OpenCV on STM32 board" αα
αααα»ααααΆαααΈαααααααα α’αααα’αΆα
ααααΎαααα»ααααα½αα
ααα½ααααα
αΆααα’αΆαααααααααα»αααΆαααααΎαααααΆαααααααα
ααΎααααΆα STM32 α¬ microcontrollers ααααααααα
ααΆαααΈααα’αΌααΆα
αααΎαααααα·αα·α
ααααααΆαααααααα½ααααααα αΆαααΈα’αααΈαααααααΌαααΆα ααα»ααααααΆααααααΆ (αα
αααα»αααΈααα’αΌααΆααα’ααααααααα»αααΆαααΎα) αα
ααΎααααΆα STM32 ααΆαααααΌαααΆαααα»ααααααααααααΌαααΆαααα½αααΈααΆαααααΆ α αΎαααααααααααΌαααΆααααα αΆααα
ααΎα’ααααααα α αΎαααΆαααααΎαααΆαααΌαααΆααααα½αα―αααααΌαααΆαααααΎα‘αΎαααΆαααα
ααΎαα»αααααΌαααααααααΆ α¬αα
ααΎααααΆααααααΆαααΆαααααααΆααααΆαααα (α§ααΆα ααα Raspberry Pi)α
α ααα»α’αααΈααΆαααΆααΆαα·ααΆα?
ααΆαααααα·αααααααα½ααααααααααααΌαααΆααααααααααααΆααα·ααααααΆ OpenCV ααΊααΆαααααΆαααα αααα»αα·ααααα»αααααΌαααααααααα·αααααα»α αααααΆααααααΆα’αααα’αα·ααααααααΆααααα αααΎαααααΆααααΆ α αΎααααααααΆααααα»αααΆαααααΎαααΆαααΌααααααααααα½α ααΆααααα ααΎαα»αααααΌαααααΎ microcontroller αα½αααααα½αααααΎαααΆαα’αα·αααααααααΆαααααΆααα ααα»ααααα ααα»α’αααΈααΆαααΆαα αααα·αααΆαααΌααααααααααα·ααα½α ααΆααααααα·αααααααΆααααΆααααααααΆααααα αΆααα?
αααα αΆααααΆαααααΎααααΆαα OpenCV αα ααΎ shawls ααΌα ααΊααΆαααααα ααΉααααααααα·αααααΈα:
- ααααα·αααΎα’αααα ααααααααααΆααα αααααΈααΆααΆααααα»ααααΌαα»ααα·α αα½α ααααα ααΆααΉααα·αααααΉαα’αααα αα αΆααααααΊαα STM32F7Discovery ααΌα ααααΆαα (ααΌααααΈααααααα·ααα·αααΈααααααααααααα·ααααα·ααΆα) αααααΆααααααααΌαααααΆαα (ααΆαααααΆαααΆα αααΎαααααΆαα)
- αααααΆααααααα½αααΆααααΌαααΆααααααααΆ C ++ αααααΆααααααΆ
- ααααΌαααΆαααΆαααΆαααααααααΆαααααααααΎαααΆααα·αααααΆα (ααααΈααΎααααααα)
- ααΆαααΆαααααα·α αα½α αααααΆαα LibC/Posix αααααΆααααααΆααααΌαααΆαααααΎααα αααα»α OS αααααΆαααααααααααααααα - α’αααααααΌαααΆααααααΆααααααααααΆαααΌα αα·ααααααΆαααααααΌ STL αααααααΆα (ααα·α αααααα)
αααα»ααααααΌααα ααΆαα Embox
ααΌα
ααααααΆ αα»αααΉααααααΌααααααα·ααΈααΆαα½ααα
ααααααααααααα·ααααα·ααΆα ααΆααΆααΆαααα’αααα»αααΆαααααΆααΆααααααΎαααΆαααα»ααααααααααα’αααα’αα·ααααααααΆαααααααΆα αααα»αααααΈααααααΎααα·αααΆααααα αΆααΆαα½αααααα - ααΌααααααα’αΆα
ααααΆααα
ααΎ
ααααΉαααα’ααΊααΆ OpenCV α’αΆα ααααΌαααΆαααΆααααααΆαααααΆααααα·αα·ααααα ααααΈαααα’αα αααααααΎα’ααααΆααααααΌαααΆααααααΆααααα½αα ααΎαβαααααΌαβαααααΆαααβαααβααΆαβααΆαβαααααβαααααααΆαβαα½α α αΎαβααΎαβααΆβααΎβααα αβααα»ααααΆαβαααβαα½αβααβααααΎα αααΌαα»αααΈαα½ααααααΌαααΆααααααΌααα αααα»ααααααΆαααααΆα ααααα‘αααα½αα
> size lib/*so --totals
text data bss dec hex filename
1945822 15431 960 1962213 1df0e5 lib/libopencv_calib3d.so
17081885 170312 25640 17277837 107a38d lib/libopencv_core.so
10928229 137640 20192 11086061 a928ed lib/libopencv_dnn.so
842311 25680 1968 869959 d4647 lib/libopencv_features2d.so
423660 8552 184 432396 6990c lib/libopencv_flann.so
8034733 54872 1416 8091021 7b758d lib/libopencv_gapi.so
90741 3452 304 94497 17121 lib/libopencv_highgui.so
6338414 53152 968 6392534 618ad6 lib/libopencv_imgcodecs.so
21323564 155912 652056 22131532 151b34c lib/libopencv_imgproc.so
724323 12176 376 736875 b3e6b lib/libopencv_ml.so
429036 6864 464 436364 6a88c lib/libopencv_objdetect.so
6866973 50176 1064 6918213 699045 lib/libopencv_photo.so
698531 13640 160 712331 ade8b lib/libopencv_stitching.so
466295 6688 168 473151 7383f lib/libopencv_video.so
315858 6972 11576 334406 51a46 lib/libopencv_videoio.so
76510375 721519 717496 77949390 4a569ce (TOTALS)
ααΌα αααα’αααα’αΆα ααΎαααΈαααααΆααα α»αααααα .bss αα·α .data αα·αααααααααα αααΎααα ααα»ααααααΌαααΆαα αααΎαααΆα 70 MiBα ααΆα αααΆααααΆααααΆ ααααα·αααΎααΆααααΌαααΆαααααΆααααΆααααΆαααα ααΉααααααα·ααΈααΆααααΆαα αααααΌαααΉαααΆαααααα·α α
α
αΌαααΎαααααΆααΆααααα
αααααΌαα»αα±ααααΆαα
αααΎαααΆααααα’αΆα
ααααΎαα
ααΆα ααΎααααΈα±ααα§ααΆα ααααα·α
αα½α
αααα»αααααΌαααΆααααα»α (αααα§ααΆα αααααΉααααα
αααααα OpenCV) ααΌα
ααααααΎαααΎααα
cmake .. -LA
α αΎααα·ααα
αααα»ααααααΎαα’αααΈααααααααΆαααααα·αα
-DBUILD_opencv_java_bindings_generator=OFF
-DBUILD_opencv_stitching=OFF
-DWITH_PROTOBUF=OFF
-DWITH_PTHREADS_PF=OFF
-DWITH_QUIRC=OFF
-DWITH_TIFF=OFF
-DWITH_V4L=OFF
-DWITH_VTK=OFF
-DWITH_WEBP=OFF
<...>
> size lib/libopencv_core.a --totals
text data bss dec hex filename
3317069 36425 17987 3371481 3371d9 (TOTALS)
αααααΆααα·αααα αααααααΆααααααΆαααΌαα»ααα½ααααααααΆαααααα»ααααα αααααΆααα·αααα αααααΊααααΆαααΆααααααΎαααααα·αααααΆααααααα·ααΈα
ααααααααααΆααααα αααΌα (-Os
) ~ 3 MiB ααααΌααα
ααααΆαα
αααΎα ααα»αααααααααααααΈαααααΉααααααΆααααΆααααααααα½α
α αΎαα
ααααααα»ααααααα·ααΈααααΆααααΆα
ααΆααΆααααααΆααααα½ααααα»αααΆαααααΆααααα α»ααα ααΎαααααα·ααΈααααΆααααΆα ααΌα ααααααααΌαααααΌαααααΆααααΆαααααΆαααααααΎαααΆαααΎ qemu α αααα»αααΆαααΆαααα·ααΆααααΆααααΆα αααα»αααΆαααααΎαααΎα Integrator / CP ααΈααααα ααΈαα½α ααΆααααΆ ARM ααααα α αΎαααΈααΈα Embox ααΆααααααααααααααΆα ααα·ααααααΆαααααα·ααΆαααα
Embox ααΆαααααααΆααααααΆααααΆαααααααααΆαααααΆααααα αααααααΎααΆ ααΎααααααα OpenCV ααΆαααΌαα»α (ααααααΆαααααααΎαααΌα ααααΆααΆααα’αααααααΆααααΆαααΆαααα "αα·α αα½α αααα»α" αααα»ααααααααααααααΆααααα·αα·αααα) αααααΆααααΈααααααα»ααααααααααααα·ααΈααΆαααααααααΎααα ααΌα αααα
version.cpp:
#include <stdio.h>
#include <opencv2/core/utility.hpp>
int main() {
printf("OpenCV: %s", cv::getBuildInformation().c_str());
return 0;
}
ααΎααααααΌααααα»αααααααααααααΎαααΆαααΆ - ααΎαααα½αααΆαααααααααααΉααα»αα
root@embox:/#opencv_version
OpenCV:
General configuration for OpenCV 4.0.1 =====================================
Version control: bd6927bdf-dirty
Platform:
Timestamp: 2019-06-21T10:02:18Z
Host: Linux 5.1.7-arch1-1-ARCH x86_64
Target: Generic arm-unknown-none
CMake: 3.14.5
CMake generator: Unix Makefiles
CMake build tool: /usr/bin/make
Configuration: Debug
CPU/HW features:
Baseline:
requested: DETECT
disabled: VFPV3 NEON
C/C++:
Built as dynamic libs?: NO
< ΠΠ°Π»ΡΡΠ΅ ΠΈΠ΄ΡΡ ΠΏΡΠΎΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ -- Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠ»Π°Π³Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ,
ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ OpenCV Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠ±ΠΎΡΠΊΡ ΠΈ Ρ.ΠΏ.>
ααα αΆααααααΆααααΊααααΌαααααΎαααΆαα§ααΆα ααααα½αα
ααα½α ααΆαααααΎααα½ααααα»αα
αααααααααααΆαααααααααααΌααααα’αααα’αα·αααααααααα½αα―αα
α§ααΆα αααααααΌααααααα‘αΎααα·αααααα·α
ααΎααααΈαααα αΆαααΌαααΆαααΆαα½αααΉααααααααααααααΆαααα
αααα»αααα·ααααααα’αΆααααααα»αα αααα»αααααΌαααααΎαααααα ααΈαααααα αα»αααΆα imshow()
α’αΆα
ααΌαααΌαααΆαααΆααααα
ααα»α
αααααΆαα QT, GTK αα·α Windows ααααα·αααΆααααΉααα·αααΆααα
αααα»αααΆαααααααααααΆαα STM32 αααααα ααΆααα·α QT ααα’αΆα
ααααΎαααΆαααΎ STM32F7Discovery ααααα ααα»αααααααααΉαααααΌαααΆααα·ααΆααααΆαα
αααα»αα’ααααααα½ααααπ
αααααΆααβααΈβααΆαβαααααΆααβααααΈβαα½αβαααα»αβααααααβαααβααααααβααβα§αααααβα αΆααβαααβααααΌαβααΆαβαααααΆβαα»α ααΎαβααα½αβααΆαβααΌαααΆαα
ααΌαααΆαααΎα
αααααα
αααα»αααααΎαααΆαααΎ STM32F7Discovery
αα ααΎ 32F746GDISCOVERY ααΆααααααα’αααα αα αΆααααααααΉαααΆα αααΎααααααΎαα’αΆα ααααΎαα·ααΈαα½αα¬αααααααα
- RAM 320 ααΈα‘αΌαα
- αααααΊ 1MiB αααααΆααααΌαααΆα
- 8 MiB SDRAM
- 16MiB QSPI NAND Flash
- αααααααααΆα microSD
ααΆα SD α’αΆα
ααααΌαααΆαααααΎααΎααααΈαααααΆαα»αααΌαααΆα ααα»αααααα
αααα»αααα·ααααααΆαααααΎαααΆαα§ααΆα ααααα·α
αα½α
ααΆαα·αααΆαααααααααααααΆαααααααα
ααΆααααα αΆαααΆααα»αααΆααααα αΆα 480 Γ 272 αααααΆααααααΆα’αααα
αα
αΆαααα»αααΉαααΆα 522 αααα
ααααα
240 αααΈααααααΊα§α αααααΊα
αααΎαααΆαααα α RAM ααΌα
αααα framebuffer αα·α heap (αααααΉαααααΌαααΆαααΆαααΆα αα½αααΆαα OpenCV ααΎααααΈαααααΆαα»ααα·αααααααααααΆααααΌαααΆα αα·ααα
ααΆαααααααααααα½α) ααΉαααΆαααΈααΆαααα
SDRAM α’αααΈααααααααα (memory for stacks αα·ααααααΌαααΆααααααααααααααααα ) ααΉααα
RAM α
ααααα·αααΎααΎαααααΆααααααα’αααααααΆαααααΆαα STM32F7Discovery (αααα αααααααΆαααΆααααΌα ααΆααααααααΆααΆααα’αα αααααΎααααα±ααααΌα ααΆααααα’αΆα ααααΎααΆαααα) α αΎααααααα OpenCV ααΆαα½αα§ααΆα ααααα ααΈααα α’αααα αα αΆααααααααΌαααΆαααΉαααΆαααΌα ααΆααααααα
text data bss dec hex filename
2876890 459208 312736 3648834 37ad42 build/base/bin/embox
αααααΆααβα’αααβαααβαα·αβααΌαβααααΆααβαααααβααΆβαα
βααααααβααΆβααα αααα»αβααΉαβααααααα αααα»α .text
ΠΈ .rodata
ααΆαααααΆα αα·αααα (αααα αααα·ααΆα αα·ααααααααΆαααα’αΆα) αααα·ααα
αααα»α .data
αα·ααααααααΊα’αΆα
ααααΆααααααΌαααΆα, .bss
ααΆαα’ααα "αα»αααΆαααα" ααααααααΆαααΆαααΆααααα ααααΌαααΆααααααααα½α (ααααααααααΉα "αα
" αα
RAM) α
ααααΉαααα’ααΊααΆ .data
/.bss
αα½ααααα ααα»ααααααΆαα½α .text
αααα αΆααΊααΆααΆαα’αααα
αα
αΆαααααΉααα 1MiB αααααΆααααΌαααΆαα α’αΆα
ααααΌαααΆααααα
αα .text
ααΌαααΆαααΈα§ααΆα αααα αΎαα’αΆαααΆα§ααΆα αααααΈααΆαα’ααααΈαα
αααα»αα’αααα
αα
αΆααα
αααα
αΆααααααΎαααα»αααα fruits.png ααΆααααααααααα αα 330KiB ααΌα
ααααααΆααΉααα·αα’αΆα
αααααααΆααααα αΆααΆαααα ααΆαα
αααΎα .text
ααΆααααααΌα OpenCV α
ααα»ααα ααΆαααΏααααα½ααααααααα αααααα - ααΆααααα»αααααααα½αααααΌααα αααα»α QSPI flash (ααΆααΆαααααααααα·ααααα·ααΆααα·ααααααααΆααααΆαααΌααααααΈα’αααα αα αΆααα ααΆαααααααααααα»α ααΌα αααααα½αααααΆαα’αΆα α αΌαααααΎαα·ααααααααααααααααΆαα)α αααα»αααααΈααα αααα αΆααΎαα‘αΎαα ααΈαα½α α’αααα αα αΆααααα QSPI flash drive αα·αα’αΆα ααααΎααΆαααααΆαααα αααααΆααααΈα§αααααααααΌαααΆαα αΆααααααΎαα‘αΎααα·α (α’αααααααΌαα αΆααααααΎααααααααααα’αααα αα αΆααααα‘ααααΈααααΆ) α αΎαααΈααΈα α’ααααα·αα’αΆα "flash" α’αααα αα αΆααααααΆαα½α αααααα·ααΈα αΆααααααΎααααααααααααααααΆααααααΆααα
ααΆαααααα ααΆααααΌαααΆααααααα α α·αααααααΆααααΌαααΆααα’αααα αααα»α QSPI α αΎααααα ααααΆααΆαα½αααΉααααααα·ααΈαααα»ααα·ααααααααααααααααααααα½αα―α αααααΉαααα½αααΆααααααααααααααΈααααααααΌαααΆαααΆαααα TFTP α
αααααα
αααα·αααΎααααΈαααααΌααααααΆαααααααα Embox ααΆαααα α‘αΎααααα αααα½αααααΆααα»α ααα»ααααααααα αΎαααααααα ααΆααααΌαααΆααααααΆαααααααααΆαα ααα»ααααααααα αα½ααααα»αα αααααα½αααααΊααΆαααΆαααααααααΆαα libstdc ++ αα·ααααααΆαααααααΌαααααααΆαα αααα αΆααααΆαααΆαααα C ++ αα αααα»α Embox ααΊα α½αααΈαα·ααΆαααΆαααα’αααααααα ααΌα αααααα ααΈααααααα»αααααΆαααααα·ααΆαααΆααΎαααΆααααααααααααΎααααΈααα½αααΆαααΆαααΆααααααααααα»αααα·ααΆαααααΉαααααΌααααααΆαααααααΆααααααααααΎαααΆαπ
αα ααΈαααα αααααα αΆααΆαααααααααΌαααΆααααααα (αααΆαα αα ααΆαααααααααααΆαααααααΆααα§ααΆα ααα OpenCV ααΎααααΈααααΎαααΆα) α αΎαα§ααΆα αααααΆαααααΎαααΆαα ααΆααααΌαααΆαααα 40 αα·ααΆααΈαααααΆαααααα»αααααΉααααΆαα·ααΆαααΎααααΈαααααααααααααααααααααΎααααα Canny α ααΆααΆααα·αααΆαααααααΊαααααα (ααΆαααΆααα·α αΆαααΆα’αααΈαααααααααΎαααααα·αααααΆααααα αΆααα ααΆααΉαα’αΆα αααααα’αααααααΆα ααααα‘ααα’αααΈααΏαααααααα»αααααΈαααααα)α
αααααΆαααΆαααΆααααα ααααα ααααα·ααααααααΊααΎααααΈαααααΎαααααΌααΎααααααΉααααα αΆαααΈααααααΆαααΆααΌαααααΆαααααΆαααααΎαααΆα OpenCV αα ααΎ STM32 αααααααΆ ααααα αααααααΌαααΆααααααα α αΌαααΆα!
tl;dr: ααΆαααααΆαααΆααα αΆα α
0α ααΆαααααααα Embox ααΌα αααα
git clone https://github.com/embox/embox && cd ./embox
1: α αΌαα αΆααααααΎααααααα‘αΎααααααα·ααΈα αΆααααααΎααααααααααααααΉα "αααα αα" ααααΆααααααααΊ QSPI α
make confload-arm/stm32f7cube
α₯α‘αΌαα’αααααααΌαααααααα ααΆαααααααααααααΆααααααα ααΎαααΉααααα ααααΌαααΆαααΆαααα TFTPα ααΎααααΈαααααα’αΆααααααΆα IP αααααααα»αααααΉααααΆαα·ααΆα αα·ααααΆαααΈα α’αααααααΌαααααααα½α conf/rootfs/networkα
α§ααΆα αααααααΆαααααααα ααΆααααααααα
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
hwaddress aa:bb:cc:dd:ee:02
gateway
- α’αΆααααααΆααααΆαααΈαααΈαααααααααααΌαααΆαααΉαααααΌαααΆααααα»α, address
- α’αΆααααααΆααααααααα»αααααΉααααΆαα·ααΆαα
αααααΆααααΈαααααΎααααααΌααααααα·ααΈα αΆααααααΎαααααααααα
make
2: ααΆααααα»ααααααα·ααΈα
αΆααααααΎαααααααααααααααΆ (αα»ααααα
ααααααα α»α) αα
ααΎααααΆα - αα·αααΆαα’αααΈααΆααααΆαααα
ααΈααααα α’αααααααΌαααααΎααΆααΌα
αααααα·ααΈαααααααααααααΆαα STM32F7Discovery α ααααα·αααΎα’ααααα·αααΉαααΈααααααααΎααΆ α’αααα’αΆα
α’αΆαα’αααΈααΆα
3α α
αααααααΌαααΆαααΆαα½αααΉα config αααααΆαα OpenCV α
make confload-platform/opencv/stm32f7discovery
make
α€α αααααα ααααΈααααα ELF αααααααΌαααααααα QSPI αα qspi.bin
arm-none-eabi-objcopy -O binary build/base/bin/embox build/base/bin/qspi.bin
--only-section=.text --only-section=.rodata
--only-section='.ARM.ex*'
--only-section=.data
ααΆαααααααΈααα αααα»ααα conf αααααααΎααΆ ααΌα ααααα’αααα’αΆα ααααΎαααΆαααΆααΆα
./conf/qspi_objcopy.sh # ΠΡΠΆΠ½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ -- build/base/bin/qspi.bin
5α αααααααΎ tftp ααΆααα qspi.bin.bin αα
ααΆαα QSPI flash driveα αα
ααΎαααΆαααΈα ααΎααααΈααααΎααΌα
αααα α
αααα qspi.bin αα
ααΆαααα root αααααΆαααΈααα tftp (ααΆααααααΆ /srv/tftp/ α¬ /var/lib/tftpboot/; αααα
αααααααΆαααααΆαααΈααααααααααΌαααααΆααΆααα
αααα»αααΆαα
ααα
αΆαααααα·αααααα»α αααααΆααααααΆααα α
ααΆ tftpd α¬ tftp-hpa αααααααα’αααααααΌαααααΎ systemctl start tftpd.service
α
αΆααααααΎα)α
# Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ tftpd
sudo cp build/base/bin/qspi.bin /srv/tftp
# Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ tftp-hpa
sudo cp build/base/bin/qspi.bin /var/lib/tftpboot
αα ααΎ Embox (α§. αα αααα»α bootloader) α’αααααααΌαααααα·ααααα·ααΆααααααααΆααΆαααααα (ααΎαααααααααΆ server ααΆαα’αΆααααααΆα 192.168.2.1)α
embox> qspi_loader qspi.bin 192.168.2.1
α¦α αααβαααααΆ goto
α’αααααααΌα "ααα" αα
αααα»αα’αααα
αα
αΆα QSPI α ααΈααΆααααΆααααΆααααΉααααααααα½αα’αΆαααααααΎαααααααααΌαααΆαααααΌαααΆαααααΆααα’αααα’αΆα
ααΎαα’αΆααααααΆαααααααααααΎααΆααααααααΆ mem 0x90000000
(α’αΆααααααΆαα
αΆααααααΎαααααΉαααΆααα 32 αααΈαααΈααΈαααααΌαααΆα); α’αααααααΉαααααΌαααΆαααααααααααααα -s
α’αΆααααααΆααααααΊαα
0x90000000 α§ααΆα αααα
embox>mem 0x90000000
0x90000000: 0x20023200 0x9000c27f 0x9000c275 0x9000c275
β β
ΡΡΠΎ Π°Π΄ΡΠ΅Ρ ΡΡΠΎ Π°Π΄ΡΠ΅Ρ
ΡΡΡΠΊΠ° ΠΏΠ΅ΡΠ²ΠΎΠΉ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ
embox>goto -i 0x9000c27f -s 0x20023200 # Π€Π»Π°Π³ -i Π½ΡΠΆΠ΅Π½ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
< ΠΠ°ΡΠΈΠ½Π°Ρ ΠΎΡΡΡΠ΄Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π½Π΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°, Π° ΠΎΠ±ΡΠ°Π·Π° Ρ OpenCV >
α§α ααΎαααααΎαααΆα
embox> edges 20
αα·αααΈαααΆαααΆαα½αααΆααααααααααααααα 40 αα·ααΆααΈπ
ααααα·αααΎααΆαα’αααΈαα»α - ααααααααα αΆαα
αααα»α
ααααα: www.habr.com