我想创建一个程序来保存从网络摄像头(帧)中获取的.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
答案 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