gpt4 book ai didi

python - cv2.imwrite( ) 只保存最后一张图像

转载 作者:行者123 更新时间:2023-12-02 16:14:57 26 4
gpt4 key购买 nike

我正在尝试构建一个简短的脚本来使用我的立体相机拍摄多个图像并保存它们当我按下按钮时到目录。

但由于某种原因,即使我拍了多张照片,我也只能得到最后一张图像。它还没有显示任何错误,并打印出我在代码中编写的正确字符串。但我得到的只是最后一对图像。

我查看了几篇帖子,但没有一个遇到相同的问题。

编辑:我没有按照这里每个人的建议在图像名称中添加“秒”,因此图像会被覆盖,因为它们是在同一分钟内拍摄的。

现在这是我完成的代码,如果有人想使用它:

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()

最佳答案

cv2.imwrite 本身没有问题,问题在于如何命名要保存的帧。您将帧命名为日+月+年_小时+分钟。这意味着您在给定分钟内保存的任何帧都将被该分钟内保存的最后一帧覆盖。例如,在 19:00:23 保存的帧将被在 19:00:34 保存的帧覆盖。根据您的用例,您可以添加 + now.strftime("%S") 以便能够每秒保存一帧,或者您甚至可以添加 + now.strftime( "%S_%f") 毫秒精度。

关于python - cv2.imwrite( ) 只保存最后一张图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59571384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com