文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== 小技集 ====== ===== 動画配信・自己受信 ===== 手持ちの動画をRTSPで再生してSCORER Edgeで1カメラとして受信することで、開発・テストがスムーズにいくケースが多いため、SDK上でも利用可能なスクリプトを用意しました\\ {{ ::filestream.zip |}}\\ exec.shのサンプルコードを改変し、配信対象の動画ファイルパス、配信ポートを設定して実行します。 ===== 画像解析結果をXwindow画面で確認(Windowsの場合) ===== 【Windowsでの作業】\\ 下記からXserverツールとしてvcxsrvをダウンロードしてインストールする\\ https://sourceforge.net/projects/vcxsrv/\\ (参考)\\ https://atmarkit.itmedia.co.jp/ait/articles/1812/06/news040.html\\ 起動する場合にDisable access controlにチェックを入れる(デフォルトではOFFになっている)\\ {{::xserver001.jpg?600|}}\\ 【SCORER SDKでの作業】\\ 〇CPU端末の場合(GPU端末は不要)\\ Xserverがインストールされておらず画面を転送できないため <code> apt -y install libxkbcommon-x11-0 apt -y install xserver-xorg </code> を実行する\\ 〇GPU・CPU端末共通\\ Terminalを開いて\\ # export DISPLAY=(windows端末のIP):0.0\\ を実行する。\\ VPNを経由している場合はVPNでのwindows端末のIPを入れる(通常であれば192.168.30.XでSoftetherでVPNに接続する時に表示される)\\ imshowなどXwindowへの表示を含むようなコードを実行するとWindowsマシン上に別ウィンドウで表示される。\\ {{::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.txt 最終更新: 2022/02/06 14:29by satoshi