摄像头进行视频捕获并定时截取屏幕图像
这段 Python 代码实现了使用电脑自身摄像头进行视频捕获,并定时截取屏幕图像,然后将图像进行 Base64 编码后发送到百度图像分类接口driver_behavior
进行处理,最后打印出接口的返回结果。同时,代码提供了通过按下 “q” 键退出程序的功能。
import cv2
import numpy as np
import requests
import base64
def video_demo():
print('开始')
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 电脑自身摄像头
i = 0 # 定时装置初始值
photoname = 1 # 文件名序号初始值
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior"
access_token = '24.1a01797496f89c67d7e26604ffeda788.2592000.1658319888.282335-26497825'
while True:
i = i + 1
reg, frame = cap.read()
frame = cv2.flip(frame, 1) # 图片左右调换
cv2.imshow('window', frame)
if i == 10: # 定时装置,定时截屏,可以修改。
filename = str(photoname) + '.png' # filename为图像名字,将photoname作为编号命名保存的截图
cv2.imwrite('E:/baiduAI/camera/photo' + '\\' + filename,
frame) # 截图 前面为放在桌面的路径 frame为此时的图像
f = open('1.png', 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
print(response.json())
i = 0 # 清零
if cv2.waitKey(1) & 0xff == ord('q'):
break
# 释放资源
cap.release()
video_demo()
cv2.destroyAllWindows()