Я пытаюсь создать короткий сценарий, чтобы делать несколько изображений с помощью моей стереокамеры и сохранять их в каталоге, когда я нажимаю кнопку.
Но по какой-то причине я получаю только последнее изображение, даже если я сделал несколько снимков. Он также не показывает ошибок и выводит правильные строки, как я написал в своем коде. Но все, что я получаю, это последняя пара изображений.
Я просмотрел несколько сообщений, но ни у одного из них нет такой же проблемы.
РЕДАКТИРОВАТЬ: я не добавлял секунды к именам изображений, как предлагали все здесь, поэтому изображения были перезаписаны, поскольку они были сделаны в течение одной и той же минуты.
Вот мой готовый код, если кто-то хочет его использовать:
import numpy as np
import cv2
import os
import datetime
# shape of wholeFrame: (240, 640, 3)
cap = cv2.VideoCapture(1)
now = 0
imgs_taken = 0
newpath_l = "Recorded_Images/left_imgs"
newpath_r = "Recorded_Images/right_imgs"
newpath = "Recorded_Images/both_imgs"
if not os.path.exists(newpath_l):
os.makedirs(newpath_l)
if not os.path.exists(newpath_r):
os.makedirs(newpath_r)
if not os.path.exists(newpath):
os.makedirs(newpath)
while 1:
cap.grab()
ret, wholeFrame = cap.retrieve()
if ret:
leftFrame = wholeFrame[:, 0:320, :]
rightFrame = wholeFrame[:, 320:640, :]
# Rectifying images here
stereoImage = np.concatenate((leftFrame, rightFrame), axis=1)
cv2.imshow('Take Snapshots', stereoImage)
key = cv2.waitKey(1) & 0xFF
# Saving images on keypress with timestamp
if key == ord('p'):
now = datetime.datetime.now()
if not cv2.imwrite(newpath_l + now.strftime("/img_left_%d%m%Y_%H%M%S.png"), leftFrame):
print("Left Snapshot not taken")
else:
print("Left Snapshot taken.")
if not cv2.imwrite(newpath_r + now.strftime("/img_right_%d%m%Y_%H%M%S.png"), rightFrame):
print("Right Snapshot not taken")
else:
print("Right Snapshot taken.")
if not cv2.imwrite(newpath + now.strftime("/img_both_%d%m%Y_%H%M%S.png"), stereoImage):
print("Stereo-Snapshot not taken")
else:
print("Stereo-Snapshot taken.")
imgs_taken = imgs_taken + 1
if key == ord('x'):
print("Number of images taken: " + str(imgs_taken))
break
else:
break
cv2.destroyAllWindows()
cap.release()
now.strftime("/img_left_%d%m%Y_%H%M.png")
- person furas   schedule 03.01.2020%d%m%Y_%H%M
, тогда вы записываете все изображения в один файл - и, наконец, вы получаете только последнее изображение. Вы должны добавить секунды (%S
) и/или миллисекунды (%s
) к именам файлов - person furas   schedule 03.01.2020