2017-08-01 8 views
-1

次のコードを使用してオブジェクトを検出して予測します。puttextラベルを常に表示する

for i in range(len(detections)): 
    face_i = detections[i] 
    x,y,w,h = face_i 
    xw1 = max(int(x - 0.4 * w), 0) 
    yw1 = max(int(y - 0.4 * h), 0) 
    xw2 = min(int(x + w + 0.7 * w), img_w - 1) 
    yw2 = min(int(y + h + 0.4 * h), img_h - 1) 
roi = frame[yw1:yw2 + 1, xw1:xw2 + 1, :] 
roi = cv2.resize(roi, (299, 299), interpolation=cv2.INTER_CUBIC) 

numpy_frame = np.asarray(roi) 
numpy_frame = cv2.normalize(numpy_frame.astype('float'), None, -0.5, .5, cv2.NORM_MINMAX) 
numpy_final = np.expand_dims(numpy_frame, axis=0) 

start_time = timeit.default_timer() 

#Do prediction for every five seconds 
if (constance.x % 5 == 0): 

    predictions = sess.run(detection_graph, {'Mul:0': numpy_final}) 

    animal_score= predictions[0][1] 
    human_Score = predictions[0][0] 
    if (male_score > female_Score): 
     human_string = "Animal" 
    else: 
     human_string = "Human" 

    cv2.putText(image_np, str (human_string), (x, y - 10), font, 1, (0, 0, 255), 2, cv2.LINE_AA) 
cv2.rectangle(image_np, (xw1, yw1), (xw2, yw2), (0, 222, 0), 1) 

return image_np 

予測には多くの時間がかかるため、時々予測をスキップします。 5秒ごとにテキストを置くだけなので、ラベルの値はちらつきます。どのようにラベルを常に表示させることができますか?

+0

新しい値が以前の値と同じであるかどうかをチェックします。それ以外の場合は、cv2.putTextメソッドを使用します。 –

+0

が同時に表示されることがあります。 –

+0

いつもラベルを表示させることはどういう意味ですか?ラベルの値がまだ変化していない場合は、5秒ごとに点滅していますか? –

答えて

1

1フレームごとにputTextに電話する必要があります。予測を実行していないフレームの場合は、最新の予測結果を描画します。