예제 #1
0
janken_class = ['グー', 'パー', 'チー', 'つまみ']

if len(sys.argv) == 2:  # 学習済ファイルの確認
    savefile = sys.argv[1]
    try:
        clf = joblib.load(savefile)
    except IOError:
        print('学習済ファイル{0}を開けません'.format(savefile))
        sys.exit()
else:
    print('使用法: python webcam_recognition.py 学習済ファイル.pkl')
    print("学習済みファイルを入力してください")
    sys.exit()

print('認識を開始します')
i = 0
while i < 10:
    start = time.time()
    hand = w_b.white_black()  # 二値化画像を得る
    #cv2.imshow('hand', hand)# 得られた二値化画像を画面に表示
    # 最大の白領域からscikit-learnに入力するためのベクトルを取得
    hand_vector = getvc.getImageVector(hand, sw, sh)
    result = clf.predict(hand_vector)  # 学習済のニューラルネットワークから分類結果を取得
    print(janken_class[result[0]])  # 分類結果を表示
    end = time.time()
    rec_time = stopWatch.stime(start, end)
    print("elapsed_time:{0}".format(rec_time) + "[sec]")
    i += 1

cv2.destroyAllWindows()
예제 #2
0
        # 学習データの格納
        for flip in [0, 1]:  # 左右反転なし(0)とあり(1)
            if flip == 1:
                img = cv2.flip(img, 1)
            for angle in [
                    -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40,
                    50, 60, 70, 80
            ]:  #角度
                # 回転行列準備
                rot_mat = cv2.getRotationMatrix2D((cx, cy), angle, 1.0)
                # 画像の回転
                img_rot = cv2.warpAffine(img,
                                         rot_mat, (lx, ly),
                                         flags=cv2.INTER_CUBIC)
                # 回転された画像から、学習用ベクトルの取得
                img_vector = getvc.getImageVector(img_rot, sw, sh)
                # 学習用データの格納
                X = np.append(X, img_vector, axis=0)
                y = np.append(y, hand_class)
# ニューラルネットワークによる画像の学習
clf = MLPClassifier(hidden_layer_sizes=(100, ),
                    max_iter=500,
                    tol=0.0001,
                    random_state=None)

print('学習中…')
clf.fit(X, y)

# 学習結果のファイルへの書き出し
joblib.dump(clf, savefile)
print('学習結果はファイル {0} に保存されました'.format(savefile))
예제 #3
0
    print('使用法: python webcam_recognition.py 学習済ファイル.pkl')
    print("学習済みファイルを入力してください")
    sys.exit()

print('認識を開始します')
i = 0
form = 'good'
yes = 0
no = 0
start = time.time()
while i < 100:
    hand = w_b.path_white_black("save_testimages5/%s/img_test%s%03d.png" %
                                (form, form, i), form)  # 二値化画像を得る
    cv2.imshow('hand', hand)  # 得られた二値化画像を画面に表示
    # 最大の白領域からscikit-learnに入力するためのベクトルを取得
    hand_vector = getvc.getImageVector(hand, sw, sh)  #画像を認識しやすいように加工
    result = clf.predict(hand_vector)  # 学習済のニューラルネットワークから分類結果を取得
    print(janken_class[result[0]])  # 分類結果を表示

    if janken_class[result[0]] == "グッド":
        yes += 1
    else:
        no += 1

    i += 1
end = time.time()
test_time = stopWatch.stime(start, end)
print("{}[sec]".format(test_time))
print('end')
print("テスト回数:{}".format(i))
print("正解数:{}  間違い数:{}".format(yes, no))