Пример #1
0
def getStatusSubjective(frame, team_color, shape_list, lamp_size):
    ''' 主観視点:イカランプの状態を取得する '''
    # 記録リスト 0:dead  1:alive  2:sp
    status_list = ['nodata' for i in range(8)]

    # 基準色リスト [黒, チームカラー, スペシャル状態]
    lamp_color = [['blk', color, 'spw'] for color in team_color]

    # 8プレイヤー分
    for i in range(8):
        # サイズと色のインデックスはiが3以下は0、4以上は1
        idx = 0 if i<=3 else 1
        size = lamp_size[idx]
        thd = lamp_color[idx]
        # イカランプ座標
        left   = C_lamp[size][i] - W_lamp['LL']
        right  = C_lamp[size][i] + W_lamp['LL']
        top    = T_lamp['subLL']
        bottom = B_lamp['subLL']
        TL = (left, top)
        BR = (right, bottom)
        # イカランプの形の画像
        shape = shape_list[i]
        index = size_list.index(size)
        bin_shp = ika_list[index] if shape == 'ika' else oct_list[index]
        # 最も面積を占める色を取得
        max_color = iip.getMostLargeColor(frame, TL, BR, thd, mask=bin_shp)
        # 最大の色のインデックス -> イカランプの状態
        status = lamp_color[idx].index(max_color)
        # リストに記録
        status_list[i] = status

    return status_list
Пример #2
0
def getStatusObjective(frame, team_color, lamp_size):
    ''' 俯瞰視点:イカランプの状態を取得する '''
    # 記録リスト 0:dead  1:alive  2:sp
    status_list = ['nodata' for i in range(8)]

    # 基準色リスト [黒, チームカラー, スペシャル状態]
    lamp_color = [['blk', color, 'spw'] for color in team_color]

    # 8プレイヤー分
    for i in range(8):
        # サイズなどのインデックスはiが3以下は0、4以上は1
        idx = 0 if i<=3 else 1
        # イカランプ座標
        left   = L_lamp[lamp_size[idx]][i]
        right  = R_lamp[lamp_size[idx]][i]
        top    = T_lamp['obj' + lamp_size[idx]]
        bottom = B_lamp['obj' + lamp_size[idx]]
        TL = (left, top)
        BR = (right, bottom)
        # 最も面積を占める色を取得
        max_color = iip.getMostLargeColor(frame, TL, BR, lamp_color[idx])
        # 最大の色のインデックス -> イカランプの状態
        status = lamp_color[idx].index(max_color)
        # リストに記録
        status_list[i] = status

    return status_list
Пример #3
0
def getTeamColor(frame):
    ''' 各チームの色を取得する '''
    # 各チームの色
    team_color = ['nodata', 'nodata']

    # アルファとブラボー
    for i in range(2):
        # 対象は4プレイヤー分のイカランプ
        TL = (L_lamp['MM'][0+4*i], T_lamp['subMM'])
        BR = (R_lamp['MM'][3+4*i], B_lamp['subMM'])
        # 最も面積を占める色をチームカラー候補から取得
        max_color = iip.getMostLargeColor(frame, TL, BR, color_catalog)
        # リストに記録
        team_color[i] = max_color

    return team_color
Пример #4
0
def getControl(frame, team_color):
    ''' エリアの確保状況を取得する '''
    # エリアの確保状況 in control -> 0:neutral 1:alfa 2:bravo
    control = 0

    # アルファとブラボー
    for i in range(2):
        # 色候補:通常は黒、確保中はチームカラー
        color_list = ['blk', team_color[i]]
        # カウント表示位置
        TL = (L_cnt[i], T_cnt[0])
        BR = (R_cnt[i], B_cnt[0])
        # 最も面積を占める色を色候補から取得
        max_color = iip.getMostLargeColor(frame, TL, BR, color_list)
        # チームカラーと同じ色なら確保中
        if max_color == team_color[i]:
            control = i + 1

    return control