<p>您需要有一个变量来指示您上次进行预测的时间。然后,在每次迭代中,将时间与该变量进行比较,以确定是否是进行另一次预测的正确时间</p>
<p><strong>使用time.time():</strong></p>
<p>我使用了<code>time.time()</code>方法来跟踪时间,该方法返回的时间是秒:</p>
<pre><code>last_prediction_time = time.time()
</code></pre>
<p><strong>以下是我在while循环中所做的操作:</strong></p>
<pre><code># Make predictions every 10 seconds:
if last_prediction_time - time.time() >= 10:
img = cv2.resize(display, (128, 128)) # R
img = img.reshape(1, 128, 128, 3)
predictions = model.predict(img) # Make predictions towards the test set
predicted_label = np.argmax(predictions) # Get index of the predicted label from prediction
print(predicted_label)
# update the last prediction time
last_prediction_time = time.time()
</code></pre>
<p><strong>一切都在一起:</strong></p>
<pre><code>import cv2
import numpy as np
from tensorflow import keras
import time
# import playsound
# wait for the sound to finish playing?
blocking = True
model = keras.models.load_model("model2.h5")
cam = cv2.VideoCapture(0)
####region of interest dimensions
startX = 800
startY = 0
finishX = 1200
finishY = 400
last_prediction_time = time.time()
while (1):
ret, frame = cam.read()
if ret:
### displays video recording and region of interest
frame = cv2.flip(frame, 1)
display = cv2.rectangle(frame.copy(), (startX, startY), (finishX, finishY), (0, 0, 255), 2)
cv2.imshow('Total Input', display)
ROI = frame[startY:finishY, startX:finishX].copy()
cv2.imshow('Region of Interest', ROI)
# Make predictions every 10 seconds:
if last_prediction_time - time.time() >= 10:
img = cv2.resize(display, (128, 128)) # R
img = img.reshape(1, 128, 128, 3)
predictions = model.predict(img) # Make predictions towards the test set
predicted_label = np.argmax(predictions) # Get index of the predicted label from prediction
print(predicted_label)
# update the last prediction time
last_prediction_time = time.time()
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cam.release()
cv2.destroyAllWindows()
</code></pre>