Exemplo n.º 1
0
def filled_square(df_threshold, diff):
    avgs = [
        np.average(diff[:, :, 0]),
        np.average(diff[:, :, 1]),
        np.average(diff[:, :, 2])
    ]

    max_c = np.argmax(avgs)

    binary = FrameProcessing.gray_to_binary(diff[:, :, max_c], 64)

    area = np.sum(binary) / binary.size
    b = np.multiply(diff[:, :, 0], binary)
    g = np.multiply(diff[:, :, 1], binary)
    r = np.multiply(diff[:, :, 2], binary)
    bin_sum = np.sum(binary)
    if bin_sum == 0:
        avgs = [0, 0, 0]
    else:
        avgs = [np.sum(b) / bin_sum, np.sum(g) / bin_sum, np.sum(r) / bin_sum]

    std = np.std(avgs)

    #    print(area, std)
    if area > df_threshold['piece_min_area'] and std > df_threshold[
            'piece_min_std']:
        #print(avg, area, std)
        return True
    else:
        return False
Exemplo n.º 2
0
def lock_effect(df_threshold, diff):
    avgs = [
        np.average(diff[:, :, 0]),
        np.average(diff[:, :, 1]),
        np.average(diff[:, :, 2])
    ]

    max_c = np.argmax(avgs)

    gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
    binary = FrameProcessing.gray_to_binary(diff[:, :, max_c], 64)
    gray = np.multiply(gray, binary)

    area = np.sum(binary) / binary.size
    b = np.multiply(diff[:, :, 0], binary)
    g = np.multiply(diff[:, :, 1], binary)
    r = np.multiply(diff[:, :, 2], binary)
    bin_sum = np.sum(binary)
    if bin_sum == 0:
        avgs = [0, 0, 0]
    else:
        avgs = [np.sum(b) / bin_sum, np.sum(g) / bin_sum, np.sum(r) / bin_sum]

    std = np.std(avgs)

    #    print(area, std)
    if area > df_threshold['piece_min_area'] and std < df_threshold[
            'piece_min_std']:
        #print(avg, area, std)
        return True
    else:
        return False
Exemplo n.º 3
0
 def draw_current_playfield(df, playfield, frame_current):
     for y in range(playfield.height):
         text = str(y)
         text_x = playfield.frame_board[y][0].min_x-40
         text_y = playfield.frame_board[y][0].max_y
         cv2.putText(frame_current, text, (text_x, text_y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1)
         for x in range(playfield.width):
             sq = playfield.frame_board[y][x]
             if playfield.board[y][x] > 0:
                 roi = sq.current_frame
                 stds = np.std(roi, axis = 2)
                 stds = FrameProcessing.gray_to_binary(stds, df['threshold']['piece_min_std'])
                 roi = FrameProcessing.multiply_binary(roi, stds)
                 if roi is not None:
                     frame_current[sq.min_y: sq.max_y, sq.min_x: sq.max_x] = roi
     return frame_current
Exemplo n.º 4
0
def square_changed(df_threshold, diff):
    avg = np.average(diff)
    avgs = [
        np.average(diff[:, :, 0]),
        np.average(diff[:, :, 1]),
        np.average(diff[:, :, 2])
    ]
    #print(avgs)

    max_c = np.argmax(avgs)

    binary = FrameProcessing.gray_to_binary(diff[:, :, max_c],
                                            df_threshold['binarize'])
    area = np.sum(binary) / binary.size

    #print(avg, area)

    if avg > df_threshold['piece_diff'] and area > df_threshold[
            'piece_min_area']:
        return True
    else:
        return False