cap = cv2.VideoCapture(0)
#参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径路径
cap.isOpened()
#判断视频对象是否成功读取,成功读取视频对象返回True
ref, frame = cap.read()
#按帧读取视频;返回值ref是布尔型,正确读取则返回True,读取失败或读取视频结尾则会返回False
key = cv2.waitKey(1)
#等待键盘输入,参数1表示延时1ms切换到下一帧,参数为0表示显示当前帧,相当于暂停
fourcc = cv2.VideoWriter_fourcc()
#创建视频流写入对象,VideoWriter_fourcc为视频编解码器
#保存格式
#cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘V’),MPEG-4编码,后缀为.mp4
#cv2.VideoWriter_fourcc(‘X’,‘2’,‘6’,‘4’),MPEG-4编码,后缀为.mp4
#cv2.VideoWriter_fourcc(‘I’, ‘4’, ‘2’, ‘0’),YUV编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc(‘P’, ‘I’, ‘M’, ‘I’),MPEG-1编码类型,后缀为.avi
#cv2.VideoWriter_fourcc(‘X’, ‘V’, ‘I’, ‘D’),MPEG-4编码类型,后缀为.avi
#cv2.VideoWriter_fourcc(‘T’, ‘H’, ‘E’, ‘O’),Ogg Vorbis,后缀为.ogv
#cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’),Flash视频,后缀为.flv
out = cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor]) # 写视频
#第一个参数是要保存的文件的路径
#fourcc 指定编码器
#fps 要保存的视频的帧率
#frameSize 要保存的文件的画面尺寸
#isColor 指示是黑白画面还是彩色的画面
cv2.cvtColor(src, code[, dst[, dstCn]])
#将图像从一种颜色空间转换为另一种颜色空间
#src:它是要更改其色彩空间的图像。
#code:它是色彩空间转换代码。
#dst:它是与src图像大小和深度相同的输出图像,它是一个可选参数。
#dstCn:它是目标图像中的频道数。如果参数为0,则通道数自动从src和代码得出,它是一个可选参数
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
#将frame从BGR转为RGB
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
#将frame从RGB转为BGR
cv2.putText()方法用于在任何图像上绘制文本字符串。
frame = cv2.putText(frame, “fps= %.2f” % fps, (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
#在图像中写入frame帧数
cv2.imwrite(filename, image)
#将图像保存到存储设备。根据指定的格式将图像保存在当前工作目录中
#filename:代表文件名的字符串。文件名必须包含图像格式,例如.jpg,.png
#image:就是要保存的图像
cv2.imshow()
#在窗口中显示图像。该窗口和图像的原始大小自适应(自动调整到原始尺寸)
cv2.imshow(“video”, frame)
#第一个参数是一个窗口名称(也就是我们对话框的名称),它是一个字符串类型。第二个参数是我们的图像。您可以创建任意数量的窗口,但必须使用不同的窗口名称。
cv2.applyColorMap(src, 8) # 将图片转为伪彩色
image = cv2.applyColorMap(src, 8) # 将图片转为伪彩色
#COLORMAP_AUTUMN = 0,
#COLORMAP_BONE = 1,
#COLORMAP_JET = 2,
#COLORMAP_WINTER = 3,
#COLORMAP_RAINBOW = 4,
#COLORMAP_OCEAN = 5,
#COLORMAP_SUMMER = 6,
#COLORMAP_SPRING = 7,
#COLORMAP_COOL = 8,
#COLORMAP_HSV = 9,
#COLORMAP_PINK = 10,
#COLORMAP_HOT = 11
cv2.destroyAllWindows() # 关闭所有窗口
capture.release()
#release()方法用于释放由调用线程获取的锁,以释放代码的关键部分。 释放锁后,其他一些线程可以获取该锁,等待其轮换使用该锁