- ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๊ฐ์ด๋
๋ชจ๋ ํจ์ ์ํ์ ์๋์ ๊ฐ์ต๋๋ค.
#ifdef WIN32
#define TS_ANPR_ENTRY extern "C" __declspec(dllexport) const char* WINAPI
#else
#define TS_ANPR_ENTRY extern "C" const char*
#endif
- ์ฅํฉํด์ง์ง ์๋๋ก ์ดํ๋ TS_ANPR_ENTRY
๋ก ํ๊ธฐํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค๋ฅธ ํจ์๋ณด๋ค ๋จผ์ ํ ๋ฒ ํธ์ถํด์ผ ํฉ๋๋ค.
TS_ANPR_ENTRY anpr_initialize(const char* mode); // [IN] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ๋ฐฉ์ ์ค์
Parameters:
mode
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ๋ฐฉ์์ ์ง์ ํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ (๊ธฐ์กด
outputFormat
์์ ์ฉ๋ ํ์ฅ) - ์ธ๋ฏธ์ฝ๋ก (
;
) ๋ฌธ์๋ก ๊ตฌ๋ถํ์ฌ ์ฌ๋ฌ ์ค์ ์ ํํํ ์ ์์ (์:json;sync
)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ๋ฐฉ์์ ์ง์ ํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ (๊ธฐ์กด
- ์ง์ ๊ฐ๋ฅํ ํญ๋ชฉ
outputFormat
:- ์ถ๋ ฅ ๋ฐ์ดํฐ ํ์
- ์ง์ํ๋ ๋ฐ์ดํฐ ํ์:
text
,json
,yaml
,xml
,csv
(๊ธฐ๋ณธ๊ฐ:text
) outputFormat
์๋ตํ๊ณ ๊ฐ๋จํtext
,json
์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
sync
:- ๋๊ธฐ ๋ชจ๋๋ก ์คํ (์ฐ๋ ๋ lock์ ๊ฑธ๊ณ ํธ์ถํ ์์๋๋ก ์ฒ๋ฆฌ)
- ๋ฏธ๋ฆฌ ์์ฑ๋ ๊ณ ์ ๊ฐฏ์์ ์ฐ๋ ๋ํ ํํ๊ฐ ์๋๊ณ ์ฐ๋ ๋๊ฐ ๊ณ์ ์๋ก ์์ฑ๋๋ ๊ตฌ์กฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ํธ์ถํ๋ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ ์ค๋ฅ ์ฝ๋ ๋ฐ์์ ์ฌ์ฉ์ ๊ณ ๋ คํ ์ ์์
103: Too many workers
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ์ฐ๋ ๋ ์๊ฐ ํ๊ณ๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ (์ต๋ 256๊ฐ)104: Resource exhausted
๋ ์ด์ ์์์ ํ ๋นํ ์ ์๋ ๊ฒฝ์ฐ
- ๋ณต์กํ ๋น๋๊ธฐ ์ฐ๋ ๋ ๊ด๋ฆฌ๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ ๋ฐ๋ฉด ์ฐ๋ ๋ ๋ฝ(lock)์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ฏ๋ก ์ฑ๋ฅ์ ๋ค์ ๋จ์ด์ง ์ ์์
sync=true
๋๋sync=false
๋ก ํํํ ์ ์์ผ๋ฉฐ, ๊ฐ๋จํsync
๋ง ์ฌ์ฉํด๋ ๋จ (์ง์ ์ํ๋ฉด ๊ธฐ๋ณธ๊ฐsync=false
๋ก ๋์)
Return value:
- ์ ์ ์ฒ๋ฆฌ๋ ๊ฒฝ์ฐ ๋น ํ
์คํธ
NULL terminated string (0x00)
์ ๋ฐํํฉ๋๋ค. - ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๋
mode
์outputFormat
์ผ๋ก ์ง์ ํ ๋ฐ์ดํฐ ํ์์ ๋ฌธ์์ด(utf-8 ์ธ์ฝ๋ฉ)๋ก ์ค๋ฅ ๋ด์ฉ์ ๋ฐํํฉ๋๋ค.
์ด๋ฏธ์ง ํ์ผ์์ ์ฐจ๋ ๋ฒํธ๋ฅผ ์ธ์ํฉ๋๋ค.
TS_ANPR_ENTRY anpr_read_file(
const char* imgFileName, // [IN] ์
๋ ฅ ์ด๋ฏธ์ง ํ์ผ๋ช
const char* outputFormat, // [IN] ์ถ๋ ฅ ๋ฐ์ดํฐ ํ์
const char* options); // [IN] ๊ธฐ๋ฅ ์ต์
Parameters:
imgFileName
:- ์ ๋ ฅ ์ด๋ฏธ์ง ํ์ผ๋ช (utf-8 ์ธ์ฝ๋ฉ)
- ์ง์ํ๋ ์ด๋ฏธ์ง ํ์ผ ํ์:
bmp
,jpg
,png
,pnm
,pbm
,pgm
,ppm
,jfif
,webp
outputFormat
:- ์ถ๋ ฅ ๋ฐ์ดํฐ ํ์
- ์ง์ํ๋ ๋ฐ์ดํฐ ํ์:
text
,json
,yaml
,xml
,csv
(๊ธฐ๋ณธ๊ฐ:text
) - ๊ฐ์ฒด ์ธ์ ์ต์
์ ์ฌ์ฉํ ๊ฒฝ์ฐ
text
๋csv
๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
options
:-
์๋ ๋ฌธ์๋ค์ ์กฐํฉํ์ฌ ๋ฒํธ ์ธ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ์ง์ ํฉ๋๋ค.
๋ฌธ์ ์๋ฏธ ์ ์ฉ ๋ผ์ด์ ์ค v
๋ฒํธํ ์ฐจ๋ ๋ถ์ฐฉ ์ฌ๋ถ ํ๋จ ์ ์ฒด m
์ฌ๋ฌ ๋์ ์ฐจ๋ ๋ฒํธํ์ ๋ชจ๋ ์ธ์ (๋ค์ค ์ธ์) ๊ฐ์ฒด์ธ์
,ํ๋ก
,์๋ฒ
s
360ยฐ ๋ชจ๋ ๊ฐ๋์ ์ฐจ๋์์ ๋ฒํธํ ์ธ์ (์๋ผ์ด๋ ์ธ์) ๊ฐ์ฒด์ธ์
,ํ๋ก
,์๋ฒ
d
๊ฐ์ฒด ์ธ์ (๋ง.๊ณต์ฐจ์ฉ) ์ ์ฒด r
์ธ์๋ ๊ฐ์ฒด(์ฐจ๋)์ ์ฐจ๋ ๋ฒํธ ์ธ์ ์ ์ฒด -
๋ผ์ด์ ์ค ์ข ๋ฅ์ ๋ฐ๋ผ ๊ธฐ๋ฅ ๋ฐ ๋ค์ค ์ธ์ ์ฐจ๋ ์๊ฐ ๋ค๋ฅด๊ฒ ์ ์ฉ๋ฉ๋๋ค. (์ฐธ๊ณ : TS-ANPR ์์ง ๋ฐ์ด๋๋ฆฌ)
-
์ต์ ์ ํ ์๋ด ์๋ ํ๋ก์ฐ์ฐจํธ์์
์์
์์์ ํ์๋ฃ
๊น์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋ํ๋ฉด์ ์ง๋๊ฐ ์ด๋ก์ ์์ ๋ฌธ์๋ค์ ๋ชจ์ ์ต์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. (๋ฌธ์์ ์์๋ ๋ฌด๊ดํฉ๋๋ค.) ์) ์ด๋ ๊ฒฝ๋ก๊ฐ์์
โv
โs
โm
โ์ ํ์๋ฃ
์ด๋ฉด"vsm"
๊ฐ ์ต์ ๊ฐ์ ๋๋ค.flowchart TD start[/์์/]-->attach{{๋ฒํธํ ์ฐจ๋ ๋ถ์ฐฉ ์ฌ๋ถ?}} attach-->|์๊ด์์|multi attach-->|์ฐจ๋์ ๋ถ์ฐฉ๋ ๋ฒํธํ๋ง|v((v)):::opt v-->angle{{์ฐจ๋ ๊ฐ๋?}} angle-->|๋ฐ๋ก ์ ์ฐจ๋๋ง|multi{{๋ค์ค์ธ์?}} angle-->|360ยฐ ๋ชจ๋ ๊ฐ๋|s((s)):::opt s-->multi multi-->|์|m((m)):::opt multi-->|์๋์ค|done[/์ ํ์๋ฃ/] m-->done start-->d((d)):::opt d-->angle2{{์ฐจ๋ ๊ฐ๋?}} angle2-->|๋ฐ๋ก ์ ์ฐจ๋๋ง|multi2{{๋ค์ค์ธ์?}} angle2-->|360ยฐ ๋ชจ๋ ๊ฐ๋|s2((s)):::opt s2-->multi2 multi2-->|์|m2((m)):::opt multi2-->|์๋์ค|read m2-->read{{๋ฒํธ ์ธ์?}} read-->|์|r((r)):::opt read-->|์๋์ค|done r-->done subgraph "๋ฒํธ ์ธ์" attach v angle multi m s end subgraph "๊ฐ์ฒด ์ธ์" read angle2 multi2 s2 m2 d r end classDef opt fill:#6F6,stroke:#CCC,stroke-width:4px,padding:10px,font-weight:bold
-
๋ฒํธ ์ธ์ ์ต์ ์ฌ์ฉ ์
options ์๋ฏธ ๋ชจ๋ ๋ฒํธํ ์ค ํ๋ ์ธ์ v
์ฐจ๋ ๋ถ์ฐฉ๋ ๋ฒํธํ ์ค ํ๋ ์ธ์ m
๋ชจ๋ ๋ฒํธํ, ๋ค์ค ์ธ์ vm
์ฐจ๋ ๋ถ์ฐฉ๋ ๋ฒํธํ, ๋ค์ค ์ธ์ vs
์ฐจ๋ ๋ถ์ฐฉ๋ ๋ฒํธํ, 360ยฐ ์๋ผ์ด๋, ํ๋ ์ธ์ vsm
์ฐจ๋ ๋ถ์ฐฉ๋ ๋ฒํธํ, 360ยฐ ์๋ผ์ด๋, ๋ค์ค ์ธ์ -
๊ฐ์ฒด ์ธ์ ์ต์ ์ฌ์ฉ ์
options ์๋ฏธ d
๋จ์ผ ๊ฐ์ฒด ์ธ์ (์ฐจ๋ ๋ฒํธ ์ธ์ ์ํจ) dr
๋จ์ผ ๊ฐ์ฒด, ์ฐจ๋ ๋ฒํธ ์ธ์ ds
๋จ์ผ ๊ฐ์ฒด, 360ยฐ ์๋ผ์ด๋ ์ธ์ (์ฐจ๋ ๋ฒํธ ์ธ์ ์ํจ) dsr
๋จ์ผ ๊ฐ์ฒด, 360ยฐ ์๋ผ์ด๋, ์ฐจ๋ ๋ฒํธ ์ธ์ dm
๋ค์ค ๊ฐ์ฒด ์ธ์ (์ฐจ๋ ๋ฒํธ ์ธ์ ์ํจ) dmr
๋ค์ค ๊ฐ์ฒด, ์ฐจ๋ ๋ฒํธ ์ธ์ (์ฐจ๋ ๋ฒํธ ์ธ์ ์ํจ) dms
๋ค์ค ๊ฐ์ฒด, 360ยฐ ์๋ผ์ด๋ (์ฐจ๋ ๋ฒํธ ์ธ์ ์ํจ) dmsr
๋ค์ค ๊ฐ์ฒด, 360ยฐ ์๋ผ์ด๋, ์ฐจ๋ ๋ฒํธ ์ธ์
-
Return value:
outputFormat
์ ์ง์ ํ ๋ฐ์ดํฐ ํ์์ ๋ฌธ์์ด(utf-8 ์ธ์ฝ๋ฉ)๋ก ๋ฒํธ ์ธ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.- ์ฌ์ฉํ
options
์ด ๋ฒํธ์ธ์๊ณผ ๊ฐ์ฒด์ธ์ ๊ณ์ด์ ๋ฐ๋ผoutputFormat
ํ์์ด ์ด์ํ๋์ด ์์ต๋๋ค. (์ฐธ๊ณ : 2. Output Format)
Remarks:
Return value
์ ์ฌ์ฉ๋๋ ๋ฌธ์์ด ๋ฒํผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ฉฐ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ๋ฌธ์์ด ๋ฒํผ๋ฅผ ์ฐธ์กฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.- ์ด ๋ฌธ์์ด ๋ฒํผ๋ thread-safeํ๋ฉฐ ๊ฐ thread ๋ณ๋ก ๋ค์ ํธ์ถ ์ ๊น์ง ๊ฒฐ๊ณผ ๊ฐ์ด ์ ์ง๋ฉ๋๋ค.
- ์ฐธ๊ณ ์ฌ์ดํธ
๋ก๋ฉ๋ ์ด๋ฏธ์ง์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์์ ์ฐจ๋ ๋ฒํธ๋ฅผ ์ธ์ํฉ๋๋ค.
v2.3.0
๋ถํฐ๋ ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง ๋ฒํผ๋ฅผ ์
๋ ฅํ ์ ์์ต๋๋ค.
TS_ANPR_ENTRY anpr_read_pixels(
const unsigned char* pixels, // [IN] ์ด๋ฏธ์ง ํฝ์
์์ ์ฃผ์
const unsigned long width, // [IN] ์ด๋ฏธ์ง ๊ฐ๋ก ํฝ์
์
const unsigned long height, // [IN] ์ด๋ฏธ์ง ์ธ๋ก ํฝ์
์
const unsigned long stride, // [IN] ์ด๋ฏธ์ง ํ ๋ผ์ธ์ ๋ฐ์ดํธ ์
const char* pixelFormat, // [IN] ์ด๋ฏธ์ง ํฝ์
ํ์
const char* outputFormat, // [IN] ์ถ๋ ฅ ๋ฐ์ดํฐ ํ์
const char* options); // [IN] ๊ธฐ๋ฅ ์ต์
Parameters:
pixels
:- ์ด๋ฏธ์ง ํฝ์ ์์ ์ฃผ์
width
:- ์ด๋ฏธ์ง ๊ฐ๋ก ํฝ์ ์
- ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํธ ์
height
:- ์ด๋ฏธ์ง ์ธ๋ก ํฝ์ ์
- ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ ์ฌ์ฉ์ํจ (๊ธฐ๋ณธ๊ฐ
0
์ผ๋ก ์ง์ )
stride
:- ์ด๋ฏธ์ง ํ ๋ผ์ธ์ ๋ฐ์ดํธ ์ (
0
์ด๋ฉด padding์์ญ์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์๋ ๊ณ์ฐ) - ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ ์ฌ์ฉ์ํจ (๊ธฐ๋ณธ๊ฐ
0
์ผ๋ก ์ง์ )
- ์ด๋ฏธ์ง ํ ๋ผ์ธ์ ๋ฐ์ดํธ ์ (
pixelFormat
:- ์ด๋ฏธ์ง ํฝ์ ํฌ๋ฉง
- ์ง์ํ๋ ํฝ์
ํฌ๋ฉง:
GRAY
: ํ๋ฐฑ ์ด๋ฏธ์ง (8bpp)BGRA
: BGRA (32bpp)RGBA
: RGBA (32bpp)RGB
: RGB (24bpp)BGR
: BGR (24bpp)BGR555
: BGR (16bpp)BGR565
: BGR (16bpp)HSV
: HSV (32bpp)YCrCb
: YUV444 (32bpp)I420
: YUV420 (12bpp)YV12
: YUV420 (12bpp)IYUV
: YUV420 (12bpp)NV12
: YUV420 (12bpp)NV21
: YUV420 (12bpp)
- ์ง์ํ๋ ์ด๋ฏธ์ง ์ธ์ฝ๋ฉ ํ์
bmp
,jpg
,jpeg
,png
,pnm
,pbm
,pgm
,ppm
,jfif
,webp
encoded
๋ก ์ง์ ํ๋ฉด ์ด๋ฏธ์ง ํ์ ์๋ ์ธ์
outputFormat
: (anpr_read_file
๊ณผ ๋์ผ)options
: (anpr_read_file
๊ณผ ๋์ผ)
Return value: (anpr_read_file
๊ณผ ๋์ผ)
Remarks: (anpr_read_file
๊ณผ ๋์ผ)
์ถ๋ ฅ ๋ฐ์ดํฐ๋ options
์ d
๊ฐ ํฌํจ๋๋ ๊ฐ์ฒด ์ธ์๊ณผ ํฌํจ๋์ง ์๋ ์ฐจ๋ ๋ฒํธ ์ธ์ ๋ ๊ฐ์ง ํ์์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
์ฐจ๋ ๋ฒํธ ํ
์คํธ๋ง ์ถ๋ ฅํฉ๋๋ค.
๋ฒํธํ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ๋ ์ค๋ฐ๊ฟ ๋ฌธ์ CR (0x0d)
๋ก ๊ตฌ๋ถํฉ๋๋ค.
01๊ฐ2345
67๋8901
์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ๋น ํ
์คํธNULL terminated string (0x00)
๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ ํ ์คํธ ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
error: (1) Invalid parameters
์ฐจ๋ ๋ฒํธ์ ์์ฑ์ csv
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
์ธ์๋ ์ฐจ๋ ๋ฒํธ ๋น ํ ๋ผ์ธ ์ฉ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ์ปฌ๋ผ์ ์ฝค๋ง ๋ฌธ์(,
)๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
01๊ฐ2345,1217,2083,92,175,12.45,0.75,0.83,0.20,ev
67๋8901,1108,1317,67,217,12.45,0.76,0.89,0.10,
๊ฐ ์ปฌ๋ผ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ปฌ๋ผ | ์๋ฏธ | ๋น๊ณ |
---|---|---|
1 | ์ฐจ๋๋ฒํธ | text |
2 | ๋ฒํธํ xํฝ์ ์ขํ | area.x |
3 | ๋ฒํธํ yํฝ์ ์ขํ | area.y |
4 | ๋ฒํธํ ํญ | area.width |
5 | ๋ฒํธํ ๋์ด | area.height |
6 | ๋ฒํธํ ๊ฐ๋ | area.angle |
7 | ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋ | conf.ocr |
8 | ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋ | conf.plate |
9 | ๋ฌธ์ ์ธ์ ์์ ์๊ฐ (์ด) | elapsed |
10(1) | ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ | attr.ev |
- (1) ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ์ด๋ฉด
ev
๊ฐ ์ถ๋ ฅ๋๊ณ ์๋๋ฉด ๊ณต๋์ผ๋ก ํ์๋จ
์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ๋น ํ
์คํธNULL terminated string (0x00)
๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ ํ ์คํธ ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
error,1,Invalid parameters
์ฐจ๋ ๋ฒํธ์ ์์ฑ์ json
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
[
{ // ์ฒซ๋ฒ์งธ ๋ฒํธํ
"text": "01๊ฐ2345", // ์ฐจ๋ ๋ฒํธ
"area": { // ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
"x": 1217, // ์ข์ธก ์๋จ x ์ขํ
"y": 2083, // ์ข์ธก ์๋จ y ์ขํ
"width": 92, // ํญ
"height": 175, // ๋์ด
"angle": 12.45 // ๊ธฐ์ธ๊ธฐ (๋)
},
"attrs": { // ๋ฒํธํ ์์ฑ
"ev": true // ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
},
"ev": true, // deprecated (attrs.ev๋ก ์ฎ๊น, ์ถํ ๋ฒ์ ์์ ์ญ์ ์์ )
"conf": { // ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
"ocr": 0.75, // ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
"plate": 0.84 // ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
},
"elapsed": 0.27 // ์์ ์๊ฐ (์ด ๋จ์)
},
{ // ๋๋ฒ์งธ ๋ฒํธํ
"text": "67๋8901",
"area": {
"x": 1108,
"y": 1317,
"width": 67,
"height": 217,
"angle": 12.45
},
"attrs": {
"ev": false
},
"ev": false,
"conf": {
"ocr": 0.76,
"plate": 0.89
},
"elapsed": 0.14
}
]
์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
[]
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ json
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
{
"error": {
"code": 1,
"message": "Invalid parameters"
}
}
์ฐจ๋ ๋ฒํธ์ ์์ฑ์ yaml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
- text: 01๊ฐ2345 # ์ฒซ๋ฒ์งธ ๋ฒํธํ, ์ฐจ๋ ๋ฒํธ
area: # ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
x: 1217 # ์ข์ธก ์๋จ x ์ขํ
y: 2083 # ์ข์ธก ์๋จ y ์ขํ
width: 92 # ํญ
height: 175 # ๋์ด
angle: 12.45 # ๊ธฐ์ธ๊ธฐ (๋)
conf: # ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
ocr: 0.75 # ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
plate: 0.83 # ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
attrs: # ๋ฒํธํ ์์ฑ
ev: true # ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
ev: true # deprecated (attrs.ev๋ก ์ฎ๊น, ์ถํ ๋ฒ์ ์์ ์ญ์ ์์ )
elapsed: 0.20 # ์์ ์๊ฐ (์ด)
- text: 67๋8901 # ๋๋ฒ์งธ ๋ฒํธํ
area:
x: 1108
y: 1317
width: 67
height: 217
angle: 12.45
conf:
ocr: 0.76
plate: 0.89
ev: false
elapsed: 0.10
์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ yaml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
error
code: 1
message: Invalid parameters
์ฐจ๋ ๋ฒํธ์ ์์ฑ์ xml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<data>
<!-- ์ฒซ๋ฒ์งธ ๋ฒํธํ
text: ์ฐจ๋ ๋ฒํธ
ev: deprecated (attrs.ev๋ก ์ฎ๊น, ์ถํ ๋ฒ์ ์์ ์ญ์ ์์ )
elapsed: ์์ ์๊ฐ (์ด)
-->
<license-plate text="01๊ฐ2345" ev="true" elapsed="0.20">
<!-- ๋ฒํธํ ์์ฑ
ev: ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
-->
<attrs ev="true"/>
<!-- ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
x: ์ข์ธก ์๋จ x ์ขํ
y: ์ข์ธก ์๋จ y ์ขํ
width: ํญ
height: ๋์ด
angle: ๊ธฐ์ธ๊ธฐ (๋)
-->
<area x="1217" y="2083" width="92" height="175" angle="12.45"/>
<!-- ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
ocr: ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
plate: ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
-->
<conf ocr="0.75" plate="0.83"/>
</license-plate>
<!-- ๋๋ฒ์งธ ๋ฒํธํ -->
<license-plate text="67๋8901" ev="false" elapsed="0.11">
<attrs ev="false"/>
<area x="1108" y="1317" width="67" height="217"/>
<conf ocr="0.76" plate="0.89"/>
</license-plate>
</data>
์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<data />
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ xml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<error code="1" message="Invalid parameters" />
์ด๋ฏธ์ง์์ ๋ฏธ๋ฆฌ ํ์ตํ ๊ฐ์ฒด๋ฅผ ์ฐพ์๋ ๋๋ค. ์ฐจ๋ณํ๋ ํน์ง์ 360ยฐ ์ด์ ๋ ์ฆ ์นด๋ฉ๋ผ๋ก ์ดฌ์๋ ์๋ณธ ์ด๋ฏธ์ง์์ ์ธ๊ณก๋ ํํ์ ๊ฐ์ฒด๋ฅผ ์ธ์ํฉ๋๋ค. ํ์ฌ ์ง์ํ๋ ๊ฐ์ฒด ๋ชฉ๋ก์ ์๋์ ๊ฐ์ต๋๋ค.
class | ์ด๋ฆ |
---|---|
car |
์ฐจ๋ |
motorcycle |
์คํ ๋ฐ์ด |
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ๋ฅผ cvs ํ์์ ํ
์คํธ๋ก ์ถ๋ ฅํฉ๋๋ค.
์ถ๋ ฅ ํ์์ text
๋ก ์ง์ ํ ๊ฒฝ์ฐ๋ csv ํ์์ผ๋ก ๋์ฒด๋์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์ธ์๋ ๊ฐ์ฒด ๋น ํ ๋ผ์ธ ์ฉ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ์ปฌ๋ผ์ ์ฝค๋ง ๋ฌธ์(,
)๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
car,2171,2281,396,521,0.9679,0.2886,51์กฐ8969,2420,2295,110,81,147.5933,0.9005,0.7864,0.3913,ev
car,264,2266,433,543,0.9706,0.2886,41๋
ธ7656,315,2281,103,81,211.3135,0.9160,0.8299,0.4189,
car,777,0,579,403,0.9716,0.2886 // ๋ฒํธํ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ
๊ฐ ์ปฌ๋ผ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ปฌ๋ผ | ์๋ฏธ | ๋น๊ณ |
---|---|---|
1 | ์ข ๋ฅ | class |
2 | xํฝ์ ์ขํ | area.x |
3 | yํฝ์ ์ขํ | area.y |
4 | ํญ | area.width |
5 | ๋์ด | area.height |
6 | ์ ๋ขฐ๋ | conf |
7 | ์์ ์๊ฐ(์ด) | elapsed |
8(1) | ์ฐจ๋๋ฒํธ | licensePlate.text |
9 | ๋ฒํธํ xํฝ์ ์ขํ | licensePlate.area.x |
10 | ๋ฒํธํ yํฝ์ ์ขํ | licensePlate.area.y |
11 | ๋ฒํธํ ํญ | licensePlate.area.width |
12 | ๋ฒํธํ ๋์ด | licensePlate.area.height |
13 | ๋ฒํธํ ๊ฐ๋ | licensePlate.area.angle |
14 | ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋ | licensePlate.conf.ocr |
15 | ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋ | licensePlate.conf.plate |
16 | ๋ฌธ์ ์ธ์ ์์ ์๊ฐ (์ด) | licensePlate.elapsed |
17(2) | ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ | licensePlate.attrs.ev |
- (1) 8๋ฒ ์ปฌ๋ผ๋ถํฐ๋
r
์ต์ ์ ์ฌ์ฉํ์ฌ ์ฐจ๋ ๋ฒํธ๊ฐ ์ธ์๋ ๊ฒฝ์ฐ๋ง ์ถ๋ ฅ๋๋ฉฐ ์๋๋ฉด ์ดํ ์ปฌ๋ผ์ด ๋ชจ๋ ์๋ต๋จ - (2) 17๋ฒ ์ปฌ๋ผ์ ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ๋ก ์ธ์๋ ๊ฒฝ์ฐ
ev
๋ก ์ถ๋ ฅ๋๋ฉฐ ์๋๋ฉด ๊ณต๋์ผ๋ก ํ์๋จ
๊ฐ์ฒด๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ๋น ํ
์คํธNULL terminated string (0x00)
๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ ํ ์คํธ ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
error,1,Invalid parameters
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ๋ฅผ json
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
[
{ // ์ฒซ๋ฒ์งธ ๊ฐ์ฒด
"class": "car", // ๊ฐ์ฒด ์ข
๋ฅ
"area": { // ๊ฐ์ฒด ์์ญ (ํฝ์
๋จ์)
"x": 2171, // ์ข์ธก ์๋จ x ์ขํ
"y": 2281, // ์ข์ธก ์๋จ y ์ขํ
"width": 396, // ํญ
"height": 521 // ๋์ด
},
"conf": 0.9679, // ๊ฐ์ฒด ์ธ์ ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
"elapsed": 0.2513, // ์์ ์๊ฐ (์ด)
"licensePlate": [ // ๋ฒํธํ
{
"text": "51์กฐ8969" // ์ฐจ๋ ๋ฒํธ
"area": { // ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
"x": 2420, // ์ข์ธก ์๋จ x ์ขํ
"y": 2295 // ์ข์ธก ์๋จ y ์ขํ
"width": 110, // ํญ
"height": 81, // ๋์ด
"angle": 147.5933 // ๊ธฐ์ธ๊ธฐ (๋)
},
"attrs": { // ๋ฒํธํ ์์ฑ
"ev": true // ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
},
"conf": { // ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
"ocr": 0.9005, // ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
"plate": 0.7864 // ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
},
"elapsed": 0.3525, // ์์ ์๊ฐ (์ด)
}
]
},
{ // ๋๋ฒ์งธ ๊ฐ์ฒด
"class": "car",
"area": {
"x": 264,
"y": 2266,
"width": 433,
"height": 543
},
"conf": 0.9706,
"elapsed": 0.2513,
"licensePlate": [
{
"text": "41๋
ธ7656"
"area": {
"x": 315,
"y": 2281,
"width": 103,
"height": 81,
"angle": 211.3135
},
"attrs": {
"ev": false
},
"conf": {
"ocr": 0.916,
"plate": 0.8299
},
"elapsed": 0.4402
}
]
},
{ // ์ธ๋ฒ์งธ ๊ฐ์ฒด (๋ฒํธํ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ)
"class": "car",
"area": {
"x": 777,
"y": 0
"height": 403,
"width": 579,
},
"conf": 0.9716,
"elapsed": 0.2513
}
]
๊ฐ์ฒด๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
[]
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ json
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
{
"error": {
"code": 1,
"message": "Invalid parameters"
}
}
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ๋ฅผ yaml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
- class: car # ์ฒซ๋ฒ์งธ ๊ฐ์ฒด, ๊ฐ์ฒด ์ข
๋ฅ
area: # ๊ฐ์ฒด ์์ญ (ํฝ์
๋จ์)
x: 2171 # ์ข์ธก ์๋จ x ์ขํ
y: 2281 # ์ข์ธก ์๋จ y ์ขํ
width: 396 # ํญ
height: 521 # ๋์ด
conf: 0.9678 # ๊ฐ์ฒด ์ธ์ ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
elapsed: 0.3190 # ์์ ์๊ฐ (์ด)
licensePlate: # ๋ฒํธํ
- text: 51์กฐ8969 # ์ฐจ๋ ๋ฒํธ
area: # ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
x: 2420 # ์ข์ธก ์๋จ x ์ขํ
y: 2295 # ์ข์ธก ์๋จ y ์ขํ
width: 110 # ํญ
height: 81 # ๋์ด
angle: 147.5933 # ๊ธฐ์ธ๊ธฐ (๋)
attrs: # ๋ฒํธํ ์์ฑ
ev: true # ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
conf: # ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
ocr: 0.9005 # ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
plate: 0.7864 # ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
elapsed: 0.3226 # ์์ ์๊ฐ (์ด)
- class: car # ๋๋ฒ์งธ ๊ฐ์ฒด
area:
x: 264
y: 2266
width: 433
height: 543
conf: 0.9706
elapsed: 0.3191
licensePlate:
- text: 41๋
ธ7656
area:
x: 315
y: 2281
width: 103
height: 81
angle: 211.3135
conf:
ocr: 0.916
plate: 0.8299
attrs:
ev: false
elapsed: 0.5527
- class: car # ์ธ๋ฒ์งธ ๊ฐ์ฒด (๋ฒํธํ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ)
area:
x: 777
y: 0
width: 579
height: 403
conf: 0.9716
elapsed: 0.3191
๊ฐ์ฒด๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ yaml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
error
code: 1
message: Invalid parameters
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ๋ฅผ xml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<data>
<!-- ์ฒซ๋ฒ์งธ ๊ฐ์ฒด
class: ๊ฐ์ฒด ์ข
๋ฅ
conf: ๊ฐ์ฒด ์ธ์ ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
elapsed: ์์ ์๊ฐ (์ด)
-->
<object class="car" conf="0.9679" elapsed="0.3287">
<!-- ๊ฐ์ฒด ์์ญ (ํฝ์
๋จ์)
x: ์ข์ธก ์๋จ x ์ขํ
y: ์ข์ธก ์๋จ y ์ขํ
width: ํญ
height: ๋์ด
-->
<area x="2171" y="2281" width="396" height="521"/>
<!-- ๋ฒํธํ
text: ์ฐจ๋ ๋ฒํธ
elapsed: ์์ ์๊ฐ (์ด)
-->
<license-plate text="51์กฐ8969" elapsed="0.3961">
<!-- ๋ฒํธํ ์์ฑ
ev: ์นํ๊ฒฝ ์ ๊ธฐ์๋์ฐจ ์ฌ๋ถ
-->
<attrs ev="true"/>
<!-- ๋ฒํธํ ์์ญ (ํฝ์
๋จ์)
x: ์ข์ธก ์๋จ x ์ขํ
y: ์ข์ธก ์๋จ y ์ขํ
width: ํญ
height: ๋์ด
angle: ๊ธฐ์ธ๊ธฐ (๋)
-->
<area x="2420" y="2295" width="110" height="81" angle="147.5933"/>
<!-- ์ ๋ขฐ๋ (๋ฒ์: 0 ~ 1)
ocr: ๋ฌธ์ ์ธ์ ์ ๋ขฐ๋
plate: ๋ฒํธํ ์ธ์ ์ ๋ขฐ๋
-->
<conf ocr="0.9005" plate="0.7864"/>
</license-plate>
</object>
<!-- ๋๋ฒ์งธ ๊ฐ์ฒด -->
<object class="car" conf="0.9706" elapsed="0.3287">
<area x="264" y="2266" width="433" height="543"/>
<license-plate text="41๋
ธ7656" elapsed="0.4364">
<attrs ev="false"/>
<area x="315" y="2281" width="103" height="81" angle="211.3135"/>
<conf ocr="0.9160" plate="0.8299"/>
</license-plate>
</object>
<!-- ์ธ๋ฒ์งธ ๊ฐ์ฒด (๋ฒํธํ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ) -->
<object class="car" conf="0.9716" elapsed="0.3287">
<area x="777" y="0" width="579" height="403"/>
</object>
</data>
๊ฐ์ฒด๊ฐ ์ธ์๋์ง ์์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋น ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<data />
์ค๋ฅ๊ฐ ๋ฐํ๋๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ xml
ํ์์ผ๋ก ์ถ๋ ฅํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<error code="1" message="Invalid parameters" />
์ ์ฒด ์ค๋ฅ ๋ชฉ๋ก์ ์๋ ํ์ ๊ฐ์ต๋๋ค.
code | message | ์ค๋ช |
---|---|---|
1 |
Invalid parameters |
ํจ์ ํธ์ถ ์ธ์๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ |
2 |
File not found |
์ ๋ ฅ ์ด๋ฏธ์ง ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ |
3 |
Invalid image |
์ ๋ ฅ ์ด๋ฏธ์ง ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์์ ๋ง์ง ์๋ ๊ฒฝ์ฐ |
4 |
Unsupported image format |
์ ๋ ฅ ์ด๋ฏธ์ง๊ฐ ์ง์๋์ง ์๋ ํ์์ธ ๊ฒฝ์ฐ |
100 |
License expired |
๋ผ์ด์ ์ค๊ฐ ๋ง๋ฃ๋ ๊ฒฝ์ฐ |
101 |
Corrupted library |
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ ํ์ผ ์ค ์ผ๋ถ๊ฐ ์๊ฑฐ๋ ์์๋ ๊ฒฝ์ฐ |
102 |
Not initialized |
์์ง์ด ์ด๊ธฐํ๋์ง ์์ ์ํ |
103 |
Too many workers |
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ์ฐ๋ ๋ ์๊ฐ ํ๊ณ๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ (์ต๋ 256๊ฐ) |
104 |
Resource exhausted |
๋ ์ด์ ์์์ ํ ๋นํ ์ ์๋ ๊ฒฝ์ฐ |
105 |
License not installed |
๋ผ์ด์ ์ค๊ฐ ์ค์น๋์ง ์์ ์ํ (๋ฆฌ๋ ์ค์์ ๋ฌด๋ฃ ํ๊ฐํ ๋ผ์ด์ผ์ค๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ํจ) |
106 |
USB dongle I/O error |
USB ๋ผ์ด์ ์ค ๋๊ธ ์ฝ๊ธฐ ์คํจ์ ๋ฐ์ |
107 |
License required |
ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ผ์ด์ ์ค๊ฐ ์์ |
108 |
Unsupported platform |
์ง์๋์ง ์๋ ํ๊ฒฝ์์ ์คํ์ ๋ฐ์ |
200 |
Unknown |
๊ธฐํ ์ ์๋์ง ์์ ์ค๋ฅ |
-
๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ
/examples /bin # ๊ฐ ํ๋ซํผ๋ณ ANPR ์์ง /windows-x86_64 # x86 64๋นํธ ์๋์ฐ์ฆ์ฉ /windows-x86 # x86 32๋นํธ ์๋์ฐ์ฆ์ฉ /linux-x86_64 # x86 64๋นํธ ๋ฆฌ๋ ์ค์ฉ /linux-aarch64 # ARM 64๋นํธ ๋ฆฌ๋ ์ค์ฉ /img # ํ ์คํธ์ฉ ์ํ ์ด๋ฏธ์ง /cpp # C++ ์์ /csharp # C# ์์ /vb # Visual Basic ์์ /javascript/nodejs # JavaScript/Node.js ์์ /python # Python ์์ /go # Golang ์์ /pascal/delphi # Pascal/Delphi ์์ /perl # Perl ์์ /ruby # Ruby ์์
-
TS-ANPR ์์ง ๋๋ ํ ๋ฆฌ๋ฅผ
/examples/bin
๋๋ ํ ๋ฆฌ์ ๋ณต์ฌํด ๋ฃ๊ณ ์์ ๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค.
์ธ์ด | ํธ์ถ๋ฐฉ์ | ์์ |
---|---|---|
C/C++ | Importlib | examples/cpp/anprCpp1 |
(์๋) | LoadLibrary | examples/cpp/anprCpp2 |
C# | .Net | examples/csharp/anprCsharpDotnet1 |
Visual Basic | .Net | examples/vb/anprVbDotnet1 |
Python | ctypes | examples/python |
JavaScript | Node.js, ffi | examples/javascript/nodejs |
Go | C, syscall | examples/go |
Pascal | Delphi | examples/pascal/delphi |
Perl | Win32::API | examples/perl |
Ruby | ffi | examples/ruby |