- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一个简短的脚本来使用我的立体相机拍摄多个图像并保存它们当我按下按钮时到目录。
但由于某种原因,即使我拍了多张照片,我也只能得到最后一张图像。它还没有显示任何错误,并打印出我在代码中编写的正确字符串。但我得到的只是最后一对图像。
我查看了几篇帖子,但没有一个遇到相同的问题。
编辑:我没有按照这里每个人的建议在图像名称中添加“秒”,因此图像会被覆盖,因为它们是在同一分钟内拍摄的。
现在这是我完成的代码,如果有人想使用它:
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/
我正在尝试将 np 数组保存为图像。问题是,如果我在 imwrite 函数中写入路径,它会起作用,但是如果我将它存储在一个变量中,然后将此变量用作路径,它就不起作用并返回错误。 这有效: cv2.im
我有以下 imwrite陈述: imwrite(img, strcat(thisdir,'_',num2str(j),'_LABEL_',categoryClassifier.Labels(label
我是 Matlab 的新手,虽然我知道一些其他的编程语言,所以如果这很简单,请原谅我。我无法在 StackOverflow 或其他地方找到任何答案。 我使用以下代码生成一个图形: figure(6)
我是 Matlab 的新手,虽然我知道一些其他的编程语言,所以如果这很简单,请原谅我。我无法在 StackOverflow 或其他地方找到任何答案。 我使用以下代码生成一个图形: figure(6)
#include #include using namespace cv; int main( int argc, char** argv ) { const char* imageName =
在 C++ 中使用 VS 2010 并尝试将其放入 for 循环中 String filename = "cropped_" + (ct+1); imwrite(filename + ".jpg",
我对 cv2.imiwrite 有疑问 有两个文件夹,photos 用于普通图像,gray 文件夹用于保存已更改的普通照片的灰度图像 我想读取一张普通图像并更改为灰度,然后保存灰度 这是我的代码 im
我有一个成功运行的图像识别脚本。我想要的是,在成功识别图像后,它将使用当前时间戳记捕获的帧保存到文件名中。 这是我的代码 #!C:\Users\Gurminders\AppData\Local\Pro
我想将所有图片从一个文件夹复制到另一个文件夹。我试图一次又一次地运行此代码,但它只返回False,而不是将图片保存到其他文件夹。 import cv2 import glob input_path =
我在python(cv2)中使用opencv对jpg、png和jpeg、JPG格式的图像进行一些处理。我正在做一个测试,在从“cv2.imread”读取后立即使用“cv2.imwrite”将图像写入磁
在 Ubuntu 16.04 中,我尝试在实时视频中检测人脸并使用 OpenCV 和 Python 保存该图像。具体来说,我想为每个检测到的人脸只保存一张图像,直到我按下“q”。因此,对于检测到的每一
我严重想知道OpenCV的cv2.imwrite()函数的作用。 我注意到,当我使用cv2.imread()阅读图片并使用cv2.imwrite()函数再次保存它们时,对于人眼而言,它们的质量不再相同
我正在尝试构建一个简短的脚本来使用我的立体相机拍摄多个图像并保存它们当我按下按钮时到目录。 但由于某种原因,即使我拍了多张照片,我也只能得到最后一张图像。它还没有显示任何错误,并打印出我在代码中编写的
我试图使用 OpenCV imwrite 函数将图像写入文件夹。代码编译并成功运行,但图像未保存在文件夹/路径中。我正在从“imshow”获取输出,我的图像采用 CV_8UC1 格式。 找到下面的代码
我正在尝试调整样本文件夹中所有图像的大小,然后将所有图像保存回测试文件夹中。下面的代码调整图像大小,但不会将它们保存到目标文件夹“test”中。我不明白问题出在哪里,我已经引用了所有文档,但没有任何东
我使用的是 Basler 相机,我正在尝试使用 OpenCV 保存抓取的图像。然而,当我尝试使用 imwrite() 时,出现了这个错误: imwrite_('C:/Users/Uporabnik/D
一个非常简单的问题...为什么我会收到此代码的读取访问冲突错误? cv::Mat laserSpeckle = Mat::zeros(100,100,CV_8UC1); imwrite( "C://t
我正在使用 C++ 和 opencv 来捕捉相机图像。在此过程中,如下面的代码所示,我还通过在捕获图像前后使用 gettimeofday() 来测量以毫秒为单位的捕获持续时间。 Mat IMG; un
我有一个简单的 OpenCV 应用程序,它从网络摄像头获取视频流,当按下 spacebar 时,它会捕获当前图像并卡住在该图像上。当我尝试使用 cv::imwrite() 方法将图片保存到磁盘时,它不
我使用示例代码读取/写入一个jpg文件,但丢失了颜色。 import sys fn1,fn2 = sys.argv[1:3] import numpy as np, cv2 img1 = cv2.i
我是一名优秀的程序员,十分优秀!