差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
miniskill [2022/02/06 01:00] satoshiminiskill [2022/02/06 14:29] (現在) – [SCORER Edge SDKからAWS S3への接続を設定する] satoshi
行 35: 行 35:
 imshowなどXwindowへの表示を含むようなコードを実行するとWindowsマシン上に別ウィンドウで表示される。\\ imshowなどXwindowへの表示を含むようなコードを実行するとWindowsマシン上に別ウィンドウで表示される。\\
 {{::xserver002.jpg?600|}} {{::xserver002.jpg?600|}}
 +
 +===== 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://blog.futurestandard.jp/entry/2018/08/20/192446\\
 +で自分で契約したAWS S3にデータを流し込む設定ができます。\\
 +
 +==== SCORER Edge SDKからAWS S3への接続を設定する ====
 +(執筆中)
 +AWS CLIで接続先設定を行い、AWS操作をPythonで行えるSDK「boto3」をインストールします\\
 +Intel NUCの場合はLinux x86 (64-bit)\\
 +Raspberry piの場合はLinux ARMのタブのコマンドを実行しましょう\\
 +https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-linux.html\\
 +
 +インストールが完了したら\\
 +<code>
 +aws configure
 +</code>
 +を実行し
 +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」をインストールします
 +<code>
 +pip install boto3
 +</code>
 +これにて準備完了です。次に下記のPythonスクリプトを実行すると指定の日付間、指定のカメラストリームのデータが受信可能になります。\\
 +スクリプトのある階層に「movielist」フォルダを作成すれば動作します。\\
 +<sxh Python; titile:moviedownload.py>
 +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    = 'future-standard.XXXX' #ユーザーの指定するバケット名
 +S3KeyPrefix = 'export/SourceData/' #SourceDataの位置までを指定 エクスポート時にexportプレフィックスを設定した時の例
 +device_list=['02-410645-D-1'] #デバイス名。S3 Exportの種類(デバイス名かIDか)に応じて指定
 +sday = datetime.date(2022, 2, 1) #対象期間開始日
 +eday = datetime.date(2022, 2, 2) #対象期間終了日
 +stime = datetime.time(7,0,0)  #対象開始時間
 +etime = datetime.time(20,0,0)  #対象終了時間
 +
 +timearr=[]
 +tmptime = datetime.datetime.combine(datetime.date.today(), stime)
 +edatetime = datetime.datetime.combine(datetime.date.today(), etime)
 +while tmptime<=edatetime:
 +    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('%Y-%m-%d'))
 +    date1 = date1 + relativedelta(days=1)
 +print('target date')
 +print(date_list)
 +
 +s3client = boto3.client('s3')
 +
 +
 +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("from")
 +print(beginning_of_the_last_month)
 +print("to")
 +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('%Y-%m-%d'))
 +    date1 = date1 + relativedelta(days=1)
 +
 +
 +for device in device_list:
 +    for date2 in date_list:
 +
 +        loopPrefix = S3KeyPrefix+device+"/"+ str(date2) +"/videos/upload_"
 +       
 +        paginator = s3client.get_paginator('list_objects_v2')
 +        # フィルタリング設定
 +        operation_parameters = {
 +            'Bucket': S3Bucket,
 +            'Prefix': loopPrefix
 +        }
 +
 +        page_iterator = paginator.paginate(**operation_parameters)
 +        dirpath = "movielist/"+device+"/"
 +        os.makedirs(dirpath, exist_ok=True)
 +        for page in page_iterator:
 +            if 'Contents' in page:
 +                for o in page['Contents']:
 +                    key = o.get('Key')
 +                    filepath=key.split('/')
 +                    ttime = datetime.time(filepath[15:16], filepath[18:19], filepath[21:22])
 +                    if os.path.exists(dirpath+filepath[5]):
 +                        continue
 +                    if ttime > stime and ttime < etime:
 +                        print(device+"/"+date2+"/"+filepath[5])
 +                        s3client.download_file(Bucket=S3Bucket,Filename=dirpath+filepath[5], Key=key)
 +</sxh>
 +
 +===== SCORER APIによる一括解析 =====
 +(執筆中)
 +
  
  
  • miniskill.1644076838.txt.gz
  • 最終更新: 2022/02/06 01:00
  • by satoshi