python3.6
opencv-python
pip install opencv-python import cv2 cap = cv2.VideoCapture(0) #打开摄像头 cap.release() #阻塞1毫秒,等待键盘输入,若无输入则返回-1 #有键盘输入,则返回键盘ASCII码对应的十进制数 cv2.waitKey(1)拍照片
按space 键,拍照
按q键退出
import cv2
import time
import os
def make_photo(n=None):
"""
n:连续拍照n张
"""
#打开摄像头
cap = cv2.VideoCapture(0)
if n is None:
#默认拍一张照片
#空格键,拍照
#q键 退出
while True:
#捕获一帧的数据
ret, frame = cap.read()
if ret:
#默认不阻塞
cv2.imshow("picture", frame)
#阻塞等待输入按键, 返回按键对应的十进制
#key = cv2.waitKey()
# print("key:", key, chr(key))
while True:
key = cv2.waitKey()
#q键退出,不拍照
if key == 113:
break
elif key == 32:
#数据帧写入图片中
label = 1
while os.path.exists("%d.png"%label):
label += 1
cv2.imwrite("%d.png"%label, frame)
continue
break
else:
#n连拍
count = 0
while count < n:
ret, frame = cap.read()
if ret:
cv2.imshow("picture", frame)
time.sleep(1.5)
cv2.imwrite("%d.png"%count, frame)
count += 1
#释放摄像头
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
make_photo(5)
拍视频
def make_video():
"""使用opencv录像"""
# 默认的摄像头
cap = cv2.VideoCapture(0)
# 指定视频代码
fourcc = cv2.VideoWriter_fourcc(*"DIVX")
writer = cv2.VideoWriter('video.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
if ret:
writer.write(frame)
#
cv2.imshow('frame', frame)
# 等待按键q操作关闭摄像头
if cv2.waitKey(1)&0xff == 113:
break
else:
break
cap.release()
writer.release()
cv2.destroyAllWindows()



