import cv2 as cv
cap = cv.VideoCapture(0)
fps = cap.get(5)
DFRAME_WIDTH = int(cap.get(3))
DFRAME_HEIGHT = int(cap.get(4))
# FRAME_WIDTH = 960
# FRAME_HEIGHT = 540
REFRAME_WIDTH = 1920
REFRAME_HEIGHT = 1080
img_count = 1
fourcc = cv.VideoWriter_fourcc(*'MJPG')
# fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.mp4', fourcc, 10.0, (REFRAME_WIDTH,REFRAME_HEIGHT))
print(fps)
print(DFRAME_WIDTH)
print(DFRAME_HEIGHT)
cap.set(cv.CAP_PROP_FRAME_WIDTH,REFRAME_WIDTH)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, REFRAME_HEIGHT)
if not cap.isOpened():
print("Cannot open camera")
exit()
while True:
# 逐帧捕获
ret, frame = cap.read()
# 如果正确读取帧,ret为True
if not ret:
break
# 显示结果帧
#dst = cv.resize(frame, (REFRAME_WIDTH, REFRAME_HEIGHT),interpolation=cv.INTER_CUBIC)#速度快,但是分辨率降低了
out.write(frame)
cv.imshow('frame', frame)
# key = cv.waitKey(1)
key = cv.waitKey(int(1000/fps))
if key == ord('q'):
break
elif key == ord('s'):
## 如果s键按下,则进行图片保存
# 写入图片 并命名图片为 图片序号.png
cv.imwrite("{}.png".format(img_count), frame)
print("保存图片,名字为 {}.png".format(img_count))
# 图片编号计数自增1
img_count += 1
# 完成所有操作后,释放捕获器
cap.release()
cv.destroyAllWindows()
#VideoWriter 定义时候视频的分辨率的大小一定要和我们存储的图片的分辨率的大小一致,否则视频输出为0k。
resize的方法放大以后像素变了,但是速度快了。