差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| miniskill [2022/01/28 14:59] – satoshi | miniskill [2022/02/06 14:29] (現在) – [SCORER Edge SDKからAWS S3への接続を設定する] satoshi | ||
|---|---|---|---|
| 行 19: | 行 19: | ||
| 【SCORER SDKでの作業】\\ | 【SCORER SDKでの作業】\\ | ||
| + | 〇CPU端末の場合(GPU端末は不要)\\ | ||
| + | Xserverがインストールされておらず画面を転送できないため | ||
| + | < | ||
| + | apt -y install libxkbcommon-x11-0 | ||
| + | apt -y install xserver-xorg | ||
| + | </ | ||
| + | を実行する\\ | ||
| + | |||
| + | 〇GPU・CPU端末共通\\ | ||
| Terminalを開いて\\ | Terminalを開いて\\ | ||
| # export DISPLAY=(windows端末のIP): | # export DISPLAY=(windows端末のIP): | ||
| 行 26: | 行 35: | ||
| imshowなどXwindowへの表示を含むようなコードを実行するとWindowsマシン上に別ウィンドウで表示される。\\ | imshowなどXwindowへの表示を含むようなコードを実行するとWindowsマシン上に別ウィンドウで表示される。\\ | ||
| {{:: | {{:: | ||
| + | |||
| + | ===== SCORER Cloud Export Serviceと連携した事後分析 ===== | ||
| + | SCORER Cloudにアップロードされた動画や解析結果はSCORER Cloud Export Serviceを利用することでユーザーが管理しているAWS S3にデータを自動的にプッシュすることが可能です。\\ | ||
| + | 元動画や解析結果からさらに追加で分析したい場合、SCORER Edge SDKを使えば手軽に始めることができます。\\ | ||
| + | |||
| + | |||
| + | ==== SCORER Cloud Export Serviceで自分のAWS S3へデータ流し込み設定を行う。 ==== | ||
| + | SCORER Cloud Export Serviceを設定しましょう\\ | ||
| + | https:// | ||
| + | で自分で契約したAWS S3にデータを流し込む設定ができます。\\ | ||
| + | |||
| + | ==== SCORER Edge SDKからAWS S3への接続を設定する ==== | ||
| + | (執筆中) | ||
| + | AWS CLIで接続先設定を行い、AWS操作をPythonで行えるSDK「boto3」をインストールします\\ | ||
| + | Intel NUCの場合はLinux x86 (64-bit)\\ | ||
| + | Raspberry piの場合はLinux ARMのタブのコマンドを実行しましょう\\ | ||
| + | https:// | ||
| + | |||
| + | インストールが完了したら\\ | ||
| + | < | ||
| + | aws configure | ||
| + | </ | ||
| + | を実行し | ||
| + | AWS Access Key ID [None]: 前項で設定したID\\ | ||
| + | AWS Secret Access Key [None]: 前項で設定したkey\\ | ||
| + | Default region name [None]: ap-northeast-1\\ | ||
| + | Default output format [None]: JSON\\ | ||
| + | で設定しましょう\\ | ||
| + | |||
| + | 次にこの認証情報を用いてPythonでAWSを操作できるSDK「boto3」をインストールします | ||
| + | < | ||
| + | pip install boto3 | ||
| + | </ | ||
| + | これにて準備完了です。次に下記のPythonスクリプトを実行すると指定の日付間、指定のカメラストリームのデータが受信可能になります。\\ | ||
| + | スクリプトのある階層に「movielist」フォルダを作成すれば動作します。\\ | ||
| + | <sxh Python; titile: | ||
| + | from boto3 import Session | ||
| + | import boto3 | ||
| + | import datetime | ||
| + | from dateutil.relativedelta import relativedelta | ||
| + | import tarfile | ||
| + | from tarfile import TarInfo | ||
| + | import gzip | ||
| + | import json | ||
| + | import os | ||
| + | import cv2 | ||
| + | |||
| + | S3Bucket | ||
| + | S3KeyPrefix = ' | ||
| + | device_list=[' | ||
| + | sday = datetime.date(2022, | ||
| + | eday = datetime.date(2022, | ||
| + | stime = datetime.time(7, | ||
| + | etime = datetime.time(20, | ||
| + | |||
| + | timearr=[] | ||
| + | tmptime = datetime.datetime.combine(datetime.date.today(), | ||
| + | edatetime = datetime.datetime.combine(datetime.date.today(), | ||
| + | while tmptime< | ||
| + | timearr.append(tmptime) | ||
| + | tmptime = tmptime + datetime.timedelta(hours=1) | ||
| + | print(timearr) | ||
| + | |||
| + | daynum = (eday-sday).days+1 | ||
| + | |||
| + | date1=sday | ||
| + | date_list = [] | ||
| + | for i in range(daynum): | ||
| + | date_list.append(date1.strftime(' | ||
| + | date1 = date1 + relativedelta(days=1) | ||
| + | print(' | ||
| + | print(date_list) | ||
| + | |||
| + | s3client = boto3.client(' | ||
| + | |||
| + | |||
| + | beginning_of_the_last_month = sday | ||
| + | end_of_the_last_month = eday | ||
| + | daynum = (end_of_the_last_month-beginning_of_the_last_month).days+1 | ||
| + | |||
| + | print(" | ||
| + | print(beginning_of_the_last_month) | ||
| + | print(" | ||
| + | print(end_of_the_last_month) | ||
| + | date1=beginning_of_the_last_month | ||
| + | date_list = [] | ||
| + | |||
| + | for i in range(daynum): | ||
| + | print(date1) | ||
| + | date_list.append(date1.strftime(' | ||
| + | date1 = date1 + relativedelta(days=1) | ||
| + | |||
| + | |||
| + | for device in device_list: | ||
| + | for date2 in date_list: | ||
| + | |||
| + | loopPrefix = S3KeyPrefix+device+"/" | ||
| + | |||
| + | paginator = s3client.get_paginator(' | ||
| + | # フィルタリング設定 | ||
| + | operation_parameters = { | ||
| + | ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | page_iterator = paginator.paginate(**operation_parameters) | ||
| + | dirpath = " | ||
| + | os.makedirs(dirpath, | ||
| + | for page in page_iterator: | ||
| + | if ' | ||
| + | for o in page[' | ||
| + | key = o.get(' | ||
| + | filepath=key.split('/' | ||
| + | ttime = datetime.time(filepath[15: | ||
| + | if os.path.exists(dirpath+filepath[5]): | ||
| + | continue | ||
| + | if ttime > stime and ttime < etime: | ||
| + | print(device+"/" | ||
| + | s3client.download_file(Bucket=S3Bucket, | ||
| + | </ | ||
| + | |||
| + | ===== SCORER APIによる一括解析 ===== | ||
| + | (執筆中) | ||
| + | |||