海康威视DS-E14a其实就是一个简单的外设相机,也没啥加密保护,使用opencv调用非常简单。下面是一个示例代码。
# coding:utf-8
import cv2
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
flag = cap.isOpened()
index = 1
while (flag):
ret, frame = cap.read()
cv2.imshow("Capture_Paizhao", frame)
k = cv2.waitKey(1) & 0xFF
if k == ord('s'): # 按下s键,进入下面的保存图片操作
cv2.imwrite("E:/" + str(index) + ".jpg", frame)
print("save" + str(index) + ".jpg successfuly!")
print("-------------------------")
index += 1
elif k == ord('q'): # 按下q键,程序退出
break
cap.release() # 释放摄像头
cv2.destroyAllWindows()# 释放并销毁窗口
通过cv2.VideoCapture(1, cv2.CAP_DSHOW)
创建一个VideoCapture对象,用于捕获摄像头的视频流。
尝试从系统中的第1个摄像头(索引为1,索引0通常是默认的内置摄像头)获取视频流。cv2.CAP_DSHOW
参数是针对Windows系统的优化,用来直接显示视频,减少延迟。
flag = cap.isOpened()
检查摄像头是否成功打开,如果成功则flag
为True。然后进入一个无限循环,直到满足退出条件。
ret, frame = cap.read()
从摄像头读取一帧视频。ret
是一个布尔值,表示是否成功读取到帧;frame
是实际的视频帧数据。
cv2.imshow("Capture_Paizhao", frame)
显示当前帧到名为"Capture_Paizhao"的窗口。
k = cv2.waitKey(1) & 0xFF
等待1毫秒看是否有键盘输入,& 0xFF
是为了确保得到的是8位的ASCII值。