各位,我遇到一个日思夜想不知道如何解决的问题,就是“如何在调用的摄像头捕捉到的画面中添加倒计时”,具体代码如下:
这是python调用摄像头的代码:
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read() # 摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像
frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示。
cv2.imshow("video", frame)
if cv2.waitKey(1) == ord('q'):
break
cap.DestoryAllWindow()
cap.release()
这是运行结果:
可以成功运行,但是我在想如何在让任看到自己脸的同时,还可以在影像的上方出现一个数字倒计时,就像从5到1这样的很明显的数子倒计时,倒计时结束后自动拍照(如何拍照我是明白的,但是如何在影像上显示数字倒计时而不影响人的观看感一直想不明白,希望各位可以帮帮我)
from PIL import Image, ImageFont, ImageDraw
#……
cap = cv2.VideoCapture(0)
cnt=5
fcnt=0
while True:
ret, frame = cap.read() # 摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像
frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示。
fcnt+=1
if fcnt>=25: #假定视频每秒25帧,则此处过了1秒钟
fcnt=0
cnt-=1
if cnt>0:
img=Image.fromarray(cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)) #获取frame对应的img
draw=ImageDraw.Draw(img) #获取img的draw对象
draw.text((20,10), "%d" %cnt, font=ImageFont.truetype('simhei.ttf', 16),fill=(255,255,255,255)) #使用draw对象的text方法在(10,20)处使用黑体,字体大小16,白色,显示cnt对应数字
frame=cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR) #获取img对应的frame
if cnt==0:
frame.imwrite('snap.jpg',frame)
break
cv2.imshow("video", frame)
if cv2.waitKey(1) == ord('q'):
break
cap.DestoryAllWindow()
cap.release()