Skip to content

Commit

Permalink
v2.1.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
bobhyun committed Apr 30, 2024
1 parent 6fd99c8 commit 6906281
Show file tree
Hide file tree
Showing 26 changed files with 772 additions and 180 deletions.
535 changes: 476 additions & 59 deletions DevGuide.md

Large diffs are not rendered by default.

33 changes: 21 additions & 12 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,27 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```


#### 2. TS-ANPR 엔진 바이너리
TS-ANPR 엔진 바이너리는 **상용 라이선스**로 제공됩니다.
아래 세 종류의 라이선스를 사용할 수 있습니다.

| 구분 | 기능 | 성능 | 기간 제한 |
|:---------------------|:--------:|-----------------:|--------------:|
| `TS-ANPR 무료 평가판` | vms | 무제한 | 30일 |
| `TS-ANPR 서버` | vms | 무제한 | 라이선스에 준함 |
| `TS-ANPR 프로` | vms | 최대 16 CPU 코어 | 라이선스에 준함 |
| `TS-ANPR 기본` | v | 최대 8 CPU 코어 | 라이선스에 준함 |
| `TS-ANPR IoT` | v | 최대 4 CPU 코어 | 라이선스에 준함 |

**-* 기능: v(차량 장착), m(다중 인식), s(서라운드 인식)*
**-* 성능: CPU 코어 일부분만 사용하는 방식으로 차번인식 성능을 제한*
라이선스 종류는 아래와 같습니다.

| 구분 | 기능<sup>(1)</sup> | 다중 인식 수 | 성능<sup>(2)</sup>| 기간 제한 |
|:---------------------|:-------------------|--------------:|-----------------:|--------------:|
| `TS-ANPR 무료 평가판` | `vmsdr` | 최대 15대 | 최대 16 CPU 코어 | 30일 |
| `TS-ANPR 서버` | `vmsdr` | 주문형<sup>(3)</sup> | 제한없음 | 라이선스에 준함 |
| `TS-ANPR 프로` | `vmsdr` | 최대 15대 | 최대 16 CPU 코어 | 라이선스에 준함 |
| `TS-ANPR 객체인식` | `msd`<sup>(4)</sup> | 최대 15대 | 최대 8 CPU 코어 | 라이선스에 준함 |
| `TS-ANPR 기본` | `vdr` | 최대 1대 | 최대 8 CPU 코어 | 라이선스에 준함 |
| `TS-ANPR IoT` | `vdr` | 최대 1대 | 최대 4 CPU 코어 | 라이선스에 준함 |

- <sup>(1)</sup> 기능 구분
- `v`: 번호판 차량 부착 여부 판단
- `m`: 여러 대의 차량 번호판을 모두 인식 (다중 인식)
- `s`: 360° 모든 각도의 차량에서 번호판 인식 (서라운드 인식)
- `d`: 객체 인식
- `r`: 인식된 객체(차량)의 차량 번호 인식
- <sup>(2)</sup> CPU 코어 일부분만 사용하는 방식으로 차량 번호 인식 성능을 제한
- <sup>(3)</sup> 15대부터 500대까지 구매 가능
- <sup>(4)</sup> 객체 인식 기능만 있고 차량 번호 인식 기능은 없음

192 changes: 129 additions & 63 deletions README.md

Large diffs are not rendered by default.

51 changes: 25 additions & 26 deletions Usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,22 @@ anpr 엔진 파일을 설치할 디렉토리에 압축을 해제합니다.

##### x86 64비트 윈도우즈 (windows-x86_64)
```
/windows-x86_64 # 윈도우즈용 64bit (amd64) 바이너리 디렉토리
/windows-x86_64 # 윈도우즈용 64bit 바이너리 디렉토리
tsanpr.dll # 공유 라이브러리 (API 제공)
lpvr-xxxxx.eon # 딥러닝 모델 #1
lpocr_kr-xxxxx.eon # 딥러닝 모델 #2
tshelper.exe # 도우미 앱 (라이선스 관리, Github 링크 제공)
tsanpr-kr-xxxxx.eon # 딥러닝 모델
tshelper.exe # 도우미 앱 (라이선스 관리)
```

##### x86 32비트 윈도우즈 (windows-x86)
```
/windows-x86 # 윈도우즈용 32bit 바이너리 디렉토리
tsanpr.dll # 공유 라이브러리 (API 제공)
lpvr-xxxxx.eon # 딥러닝 모델 #1
lpocr_kr-xxxxx.eon # 딥러닝 모델 #2
tshelper.exe # 도우미 앱 (라이선스 관리, Github 링크 제공)
tsanpr-kr-xxxxx.eon # 딥러닝 모델
tshelper.exe # 도우미 앱 (라이선스 관리)
```

`tshelper.exe` 파일을 실행하면 해당 컴퓨터에 `30일 평가판 라이선스`가 자동으로 설치되며, 이 후 30일 동안 `TS-ANPR 프로`의 모든 기능을 사용해 볼 수 있습니다.
![](img/evalationLicense.jpg)
![](img/trialLicense.png)

## 리눅스용

Expand All @@ -44,9 +42,8 @@ tar -xvf ts-anpr-v*-linux-x86_64.tar.gz
```
/linux-x86_64
libtsanpr.so # 공유 라이브러리 (API 제공)
lpvr-xxxxx.eon # 딥러닝 모델 #1
lpocr_kr-xxxxx.eon # 딥러닝 모델 #2
tshelper # 도우미 앱 (라이선스 관리, Github 링크 제공)
tsanpr-kr-xxxxx.eon # 딥러닝 모델
tshelper # 도우미 앱 (라이선스 관리)
```

##### ARM 64비트 리눅스 (linux-aarch64)
Expand All @@ -59,9 +56,8 @@ tar -xvf ts-anpr-v*-linux-aarch64.tar.gz
```
/linux-aarch64
libtsanpr.so # 공유 라이브러리 (API 제공)
lpvr-xxxxx.eon # 딥러닝 모델 #1
lpocr_kr-xxxxx.eon # 딥러닝 모델 #2
tshelper # 도우미 앱 (라이선스 관리, Github 링크 제공)
tsanpr-kr-xxxxx.eon # 딥러닝 모델
tshelper # 도우미 앱 (라이선스 관리)
```


Expand All @@ -73,8 +69,8 @@ tar -xvf ts-anpr-v*-linux-aarch64.tar.gz
```sh
./tshelper

TS-ANPR v1.5.0 (linux-x86_64)
(C) 2022-2023. TS Solution Corp. all rights reserved.
TS-ANPR v2.1.0 (linux-x86_64)
(C) 2022-2024. TS Solution Corp. all rights reserved.

https://github.com/bobhyun/TS-ANPR

Expand Down Expand Up @@ -105,60 +101,63 @@ https://github.com/bobhyun/TS-ANPR
```sh
sudo ./tshelper -t

TS-ANPR v1.5.0 (linux-x86_64)
(C) 2022-2023. TS Solution Corp. all rights reserved.
TS-ANPR v2.1.0 (linux-x86_64)
(C) 2022-2024. TS Solution Corp. all rights reserved.

https://github.com/bobhyun/TS-ANPR

새 라이선스가 설치되었습니다.

현재 라이선스:
TS-ANPR 서버, 30일 평가판 (30일 남음)
동시 인식 차량 수: 최대 15
```

##### 1.2.2 정품 라이선스 (소프트웨어 라이선스)
소프트웨어 라이선스는 시스템별 고유 ID를 식별하여 해당 시스템에서만 동작하는 라이선스를 발급받아 설치하는 방식으로 관리합니다.

###### 1) 라이선스 요청서 만들기
###### (1) 라이선스 요청서 만들기
아래 명령으로 생성된 라이선스 요청서 파일을 보내주시면 해당 시스템용 인증서 파일을 발급해 드립니다.
```sh
sudo ./tshelper -r

TS-ANPR v1.5.0 (linux-x86_64)
(C) 2022-2023. TS Solution Corp. all rights reserved.
TS-ANPR v2.1.0 (linux-x86_64)
(C) 2022-2024. TS Solution Corp. all rights reserved.

https://github.com/bobhyun/TS-ANPR

현재 라이선스:
TS-ANPR 서버, 30일 평가판 (30일 남음)
동시 인식 차량 수: 최대 15

라이선스 요청서 파일이 저장되었습니다.

파일명: O20230414-TS-ANPR-8f5b0de4e9eabab6d727ab5c0d4c97e3.req
```

###### 2) 인증서 설치하기
###### (2) 인증서 설치하기
발급받은 정품 인증서 파일은 아래 명령으로 설치합니다.
```sh
sudo ./tshelper -c C20230414-TS-ANPR-8f5b0de4e9eabab6d727ab5c0d4c97e3.cert

TS-ANPR v1.5.0 (linux-x86_64)
(C) 2022-2023. TS Solution Corp. all rights reserved.
TS-ANPR v2.1.0 (linux-x86_64)
(C) 2022-2024. TS Solution Corp. all rights reserved.

https://github.com/bobhyun/TS-ANPR

새 라이선스가 설치되었습니다.
현재 라이선스:
TS-ANPR 서버, 정품 라이선스
동시 인식 차량 수: 최대 15
```

##### 1.2.3 정품 라이선스 (USB 동글 라이선스)
USB 동글 라이선스는 시스템에 USB 동글을 장착하면 즉시 적용됩니다.
단, 리눅스이 경우는 USB 동글을 최초로 삽입하기 전에 아래 명령을 한 번 실행한 후부터 자동 인식됩니다.
```sh
sudo ./tshelper -d
TS-ANPR v1.5.0 (linux-x86_64)
(C) 2022-2023. TS Solution Corp. all rights reserved.
TS-ANPR v2.1.0 (linux-x86_64)
(C) 2022-2024. TS Solution Corp. all rights reserved.

https://github.com/bobhyun/TS-ANPR

Expand Down
10 changes: 10 additions & 0 deletions examples/cpp/anprCpp1/anprCpp1/anprCpp1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,32 @@ void readPixels(const char* imgfile, const char* outputFormat, const char* optio

void anprDemo1(const char* outputFormat)
{
// anpr
readFile(IMG_PATH "licensePlate.jpg", outputFormat, "v");
readFile(IMG_PATH "licensePlate.jpg", outputFormat, "");
readFile(IMG_PATH "multiple.jpg", outputFormat, "vm");
readFile(IMG_PATH "multiple.jpg", outputFormat, "");
readFile(IMG_PATH "surround.jpg", outputFormat, "vms");
readFile(IMG_PATH "surround.jpg", outputFormat, "");

// object detection
readFile(IMG_PATH "surround.jpg", outputFormat, "dms");
readFile(IMG_PATH "surround.jpg", outputFormat, "dmsr");
}

void anprDemo2(const char* outputFormat)
{
// anpr
readPixels(IMG_PATH "licensePlate.jpg", outputFormat, "v");
readPixels(IMG_PATH "licensePlate.jpg", outputFormat, "");
readPixels(IMG_PATH "multiple.jpg", outputFormat, "vm");
readPixels(IMG_PATH "multiple.jpg", outputFormat, "");
readPixels(IMG_PATH "surround.jpg", outputFormat, "vms");
readPixels(IMG_PATH "surround.jpg", outputFormat, "");

// object detection
readPixels(IMG_PATH "surround.jpg", outputFormat, "dms");
readPixels(IMG_PATH "surround.jpg", outputFormat, "dmsr");
}


Expand Down
10 changes: 10 additions & 0 deletions examples/cpp/anprCpp2/anprCpp2/anprCpp2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,32 @@ void readPixels(const char* imgfile, const char* outputFormat, const char* optio

void anprDemo1(const char* outputFormat)
{
// anpr
readFile(IMG_PATH "licensePlate.jpg", outputFormat, "v");
readFile(IMG_PATH "licensePlate.jpg", outputFormat, "");
readFile(IMG_PATH "multiple.jpg", outputFormat, "vm");
readFile(IMG_PATH "multiple.jpg", outputFormat, "");
readFile(IMG_PATH "surround.jpg", outputFormat, "vms");
readFile(IMG_PATH "surround.jpg", outputFormat, "");

// object detection
readFile(IMG_PATH "surround.jpg", outputFormat, "dms");
readFile(IMG_PATH "surround.jpg", outputFormat, "dmsr");
}

void anprDemo2(const char* outputFormat)
{
// anpr
readPixels(IMG_PATH "licensePlate.jpg", outputFormat, "v");
readPixels(IMG_PATH "licensePlate.jpg", outputFormat, "");
readPixels(IMG_PATH "multiple.jpg", outputFormat, "vm");
readPixels(IMG_PATH "multiple.jpg", outputFormat, "");
readPixels(IMG_PATH "surround.jpg", outputFormat, "vms");
readPixels(IMG_PATH "surround.jpg", outputFormat, "");

// object detection
readPixels(IMG_PATH "surround.jpg", outputFormat, "dms");
readPixels(IMG_PATH "surround.jpg", outputFormat, "dmsr");
}

int loadEngineModule()
Expand Down
10 changes: 10 additions & 0 deletions examples/csharp/anprCsharpDotnet1/anprCsharpDotnet1/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,21 +72,31 @@ static void readPixels(string imgfile, string outputFormat, string options)

static void anprDemo1(string outputFormat)
{
// anpr
readFile(IMG_PATH + "licensePlate.jpg", outputFormat, "v");
readFile(IMG_PATH + "licensePlate.jpg", outputFormat, "");
readFile(IMG_PATH + "multiple.jpg", outputFormat, "vm");
readFile(IMG_PATH + "multiple.jpg", outputFormat, "");
readFile(IMG_PATH + "surround.jpg", outputFormat, "vms");
readFile(IMG_PATH + "surround.jpg", outputFormat, "");

// object detection
readFile(IMG_PATH + "surround.jpg", outputFormat, "dms");
readFile(IMG_PATH + "surround.jpg", outputFormat, "dmsr");
}
static void anprDemo2(string outputFormat)
{
// anpr
readPixels(IMG_PATH + "licensePlate.jpg", outputFormat, "v");
readPixels(IMG_PATH + "licensePlate.jpg", outputFormat, "");
readPixels(IMG_PATH + "multiple.jpg", outputFormat, "vm");
readPixels(IMG_PATH + "multiple.jpg", outputFormat, "");
readPixels(IMG_PATH + "surround.jpg", outputFormat, "vms");
readPixels(IMG_PATH + "surround.jpg", outputFormat, "");

// object detection
readPixels(IMG_PATH + "surround.jpg", outputFormat, "dms");
readPixels(IMG_PATH + "surround.jpg", outputFormat, "dmsr");
}

static void Main(string[] args)
Expand Down
34 changes: 22 additions & 12 deletions examples/go/anprGolang1.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,21 +90,31 @@ func readPixels(imgfile, outputFormat, options string) {
}

func anprDemo1(outputFormat string) {
readFile(IMG_PATH+"licensePlate.jpg", outputFormat, "v")
readFile(IMG_PATH+"licensePlate.jpg", outputFormat, "")
readFile(IMG_PATH+"multiple.jpg", outputFormat, "vm")
readFile(IMG_PATH+"multiple.jpg", outputFormat, "")
readFile(IMG_PATH+"surround.jpg", outputFormat, "vms")
readFile(IMG_PATH+"surround.jpg", outputFormat, "")
// anpr
readFile(IMG_PATH + "licensePlate.jpg", outputFormat, "v")
readFile(IMG_PATH + "licensePlate.jpg", outputFormat, "")
readFile(IMG_PATH + "multiple.jpg", outputFormat, "vm")
readFile(IMG_PATH + "multiple.jpg", outputFormat, "")
readFile(IMG_PATH + "surround.jpg", outputFormat, "vms")
readFile(IMG_PATH + "surround.jpg", outputFormat, "")

// object detection
readFile(IMG_PATH + "surround.jpg", outputFormat, "dms")
readFile(IMG_PATH + "surround.jpg", outputFormat, "dmsr")
}

func anprDemo2(outputFormat string) {
readPixels(IMG_PATH+"licensePlate.jpg", outputFormat, "v")
readPixels(IMG_PATH+"licensePlate.jpg", outputFormat, "")
readPixels(IMG_PATH+"multiple.jpg", outputFormat, "vm")
readPixels(IMG_PATH+"multiple.jpg", outputFormat, "")
readPixels(IMG_PATH+"surround.jpg", outputFormat, "vms")
readPixels(IMG_PATH+"surround.jpg", outputFormat, "")
// anpr
readPixels(IMG_PATH + "licensePlate.jpg", outputFormat, "v")
readPixels(IMG_PATH + "licensePlate.jpg", outputFormat, "")
readPixels(IMG_PATH + "multiple.jpg", outputFormat, "vm")
readPixels(IMG_PATH + "multiple.jpg", outputFormat, "")
readPixels(IMG_PATH + "surround.jpg", outputFormat, "vms")
readPixels(IMG_PATH + "surround.jpg", outputFormat, "")

// object detection
readPixels(IMG_PATH + "surround.jpg", outputFormat, "dms")
readPixels(IMG_PATH + "surround.jpg", outputFormat, "dmsr")
}

func main() {
Expand Down
10 changes: 10 additions & 0 deletions examples/javascript/nodejs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,21 +112,31 @@ function readPixels(imgFile, outputFormat, options) {
}

function anprDemo1(outputFormat) {
// anpr
readFile(path.join(IMG_PATH, "licensePlate.jpg"), outputFormat, "v");
readFile(path.join(IMG_PATH, "licensePlate.jpg"), outputFormat, "");
readFile(path.join(IMG_PATH, "multiple.jpg"), outputFormat, "vm");
readFile(path.join(IMG_PATH, "multiple.jpg"), outputFormat, "");
readFile(path.join(IMG_PATH, "surround.jpg"), outputFormat, "vms");
readFile(path.join(IMG_PATH, "surround.jpg"), outputFormat, "");

// object detection
readFile(path.join(IMG_PATH, "surround.jpg"), outputFormat, "dms");
readFile(path.join(IMG_PATH, "surround.jpg"), outputFormat, "dmsr");
}

function anprDemo2(outputFormat) {
// anpr
readPixels(path.join(IMG_PATH, "licensePlate.jpg"), outputFormat, "v");
readPixels(path.join(IMG_PATH, "licensePlate.jpg"), outputFormat, "");
readPixels(path.join(IMG_PATH, "multiple.jpg"), outputFormat, "vm");
readPixels(path.join(IMG_PATH, "multiple.jpg"), outputFormat, "");
readPixels(path.join(IMG_PATH, "surround.jpg"), outputFormat, "vms");
readPixels(path.join(IMG_PATH, "surround.jpg"), outputFormat, "");

// object detection
readPixels(path.join(IMG_PATH, "surround.jpg"), outputFormat, "dms");
readPixels(path.join(IMG_PATH, "surround.jpg"), outputFormat, "dmsr");
}

(function () {
Expand Down
12 changes: 11 additions & 1 deletion examples/pascal/delphi/anprDelphi.dpr
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ begin
| | |
| | |
| | |
스캔 방향 | | |
스캔 방향 | | |
| |
이미지 첫라인 시작 주소 -> +-------------------------------+
}
Expand All @@ -117,22 +117,32 @@ end;

procedure anprDemo1(outputFormat: string);
begin
// anpr
readFile(IMG_PATH + 'licensePlate.jpg', outputFormat, 'v');
readFile(IMG_PATH + 'licensePlate.jpg', outputFormat, '');
readFile(IMG_PATH + 'multiple.jpg', outputFormat, 'vm');
readFile(IMG_PATH + 'multiple.jpg', outputFormat, '');
readFile(IMG_PATH + 'surround.jpg', outputFormat, 'vms');
readFile(IMG_PATH + 'surround.jpg', outputFormat, '');

// object detection
readFile(IMG_PATH + 'surround.jpg', outputFormat, 'dms');
readFile(IMG_PATH + 'surround.jpg', outputFormat, 'dmsr');
end;

procedure anprDemo2(outputFormat: string);
begin
// anpr
readPixels(IMG_PATH + 'licensePlate.jpg', outputFormat, 'v');
readPixels(IMG_PATH + 'licensePlate.jpg', outputFormat, '');
readPixels(IMG_PATH + 'multiple.jpg', outputFormat, 'vm');
readPixels(IMG_PATH + 'multiple.jpg', outputFormat, '');
readPixels(IMG_PATH + 'surround.jpg', outputFormat, 'vms');
readPixels(IMG_PATH + 'surround.jpg', outputFormat, '');

// object detection
readPixels(IMG_PATH + 'surround.jpg', outputFormat, 'dms');
readPixels(IMG_PATH + 'surround.jpg', outputFormat, 'dmsr');
end;

var
Expand Down
Loading

0 comments on commit 6906281

Please sign in to comment.