将视频另存为帧OpenCV {PY}

时间:2014-12-09 12:11:02

标签: python opencv

我想创建一个程序来保存从网络摄像头(帧)中获取的.jpg图像。 我的程序现在做的是,打开网络摄像头,只取一个帧,然后一切都停止。

我想拥有的不止一帧 我的错误代码就是这个:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
count = 0

while True:
   # Capture frame-by-frame
   ret, frame = cap.read()

   # Our operations on the frame come here
   gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
   cv2.imwrite("frame%d.jpg" % ret, frame)     # save frame as JPEG file
   count +=1

   # Display the resulting frame
   cv2.imshow('frame',gray)
   if cv2.waitKey(10):
      break

4 个答案:

答案 0 :(得分:5)

实际上,您似乎总是使用相同的名称保存图像 因为你在连接ret而不是在imwrite方法中计数

试试这个:

name = "frame%d.jpg"%count
cv2.imwrite(name, frame)     # save frame as JPEG file

答案 1 :(得分:2)

如果未按任何键且时间延迟到期,cv2.waitKey将返回-1。您可以在doc

中查看

基本上,您所要做的就是稍微改变程序的结尾:

# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(10) != -1:
    break

答案 2 :(得分:2)

使用此 -

count = 0
cv2.imwrite("frame%d.jpg" % count, frame)
count = count+1

答案 3 :(得分:0)

虽然这已经很晚了但我不得不说prtkp的答案就是你需要的......你用来枚举图像的ret值是错误的。 Ret只是一个布尔值...所以当它检测到图像时,它会在那里放置一个图像名称......

我刚刚使用了这个......标题上的c = 0

 cv2.imwrite("img/frame %d.jpg" % c,img)
    c=c+1