проблемы с CNN, чтобы делать прогнозы в видеокадрах - PullRequest
0 голосов
/ 29 мая 2020
import cv2
import numpy as np
import tensorflow as tf

model = tf.keras.models.load_model("oneptwoside.model")
CATEGORIES = ["front", "back"]
cap = cv2.VideoCapture(0)

if cap.isOpened():
    ret, frame = cap.read()
else:
        ret = False

while ret:
       ret, frame = cap.read()
       gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
       cv2.imshow('frame',gray)
       IMG_SIZE = 200  
       img_array = cv2.imread(frame, cv2.IMREAD_GRAYSCALE)
       new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
       prediction = model.predict([img_array])
       print(prediction)
       print(CATEGORIES[int(prediction[0][0])])
       if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Я не могу делать прогнозы с помощью веб-камеры. Я пробую тот же код на изображении, он отлично работает с небольшой настройкой. Однако в видео всегда не читается кадр или возникает проблема с изменением размера

1 Ответ

0 голосов
/ 30 мая 2020
if cap.isOpened():
    ret, frame = cap.read()
else:
        ret = False

while ret:
       curr_time = time.time() 
       ret, frame = cap.read()
       gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

       curTime = time.time()
       sec = curTime - prevTime
       prevTime = curTime

       fps = 1/(sec)

       str = "FPS : %0.1f" % fps

       cv2.putText(frame, str, (0, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 150, 0))
       cv2.imshow('frame',gray)
       cv2.imshow('color', frame)
       if curr_time - last_recorded_time >= 0.0001: 

          last_recorded_time = curr_time

          IMG_SIZE = 200  
          #img_array = cv2.imread('frame', cv2.IMREAD_GRAYSCALE)
          frame = cv2.resize(frame, None, fx=0.5, fy=0.5)
          frame = cv2.resize(frame, (IMG_SIZE, IMG_SIZE))
          #frame = frame[np.newaxis, ...] 
          frame = frame.reshape((-1, 200, 200, 1))
          cv2.rectangle(frame,(200,0),(150,128),(0,255,0),3)
          prediction = model.predict([frame])
          #prediction = model.predict([frame])
          print(prediction)
          print(CATEGORIES[int(prediction[0][0])])


          if cv2.waitKey(1) & 0xFF == ord('q'):
           break

вот решение не идеальное, но работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...