3小时精通opencv(一)图片,视频,摄像头的读取
图片读取
# 读取图片
img = cv2.imread('Resources/lena.png')
cv2.imshow('lena', img)
cv2.waitKey(0)
cv2.imread(需要读取图片的路径)
cv2.imshow(窗口的名字, 需要展示的图片)
cv2.waitKey(图片展示的时间(毫秒))
waitkey控制着imshow的持续时间, 需要和imshow
一起使用, 他会在一定时间内等待接收键盘上的一个值- 若参数
delay≤0
:表示一直等待按键; - 若
delay
取正整数:表示等待按键的时间, 以毫秒为单位
- 若参数
视频读取
cap = cv2.VideoCapture("Resources/test_video.mp4")
while True:
success, img = cap.read()
cv2.imshow('Video', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
视频读取的格式比较固定, 通过循环不断输出每帧的图片, 达到输出视频的效果, 本质上还是对图片的输出
success, img = cap.read()
- 参数
success
代表有没有读取到图片 - 参数
img
表示截取到一帧的图片
- 参数
cv2.waitKey(1) & 0xFF == ord('q')
当键盘输入q
时退出播放
摄像头读取
# 使用电脑摄像头
cap = cv2.VideoCapture(0) # 0表示默认摄像头
frameWidth = 640
frameHeight = 480
cap.set(3, frameWidth) # 参数:3:在视频流的帧的宽度
cap.set(4, frameHeight) # 参数:4:在视频流的帧的高度
cap.set(10, 100) # 参数:10:图像的亮度(仅适用于照相机)
while True:
success, img = cap.read()
cv2.imshow('Video', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
调用摄像头与读取视频类似
cv2.VideoCapture(0)
这里的0
表示使用电脑默认摄像头, 如果有多个摄像头的话也可以用1
,2
参数来调用其他摄像头
摄像头各参数详解见该博文
这里只是简单的设置了视频流的宽高和亮度
print(cv2.CAP_PROP_FRAME_WIDTH) # 3
print(cv2.CAP_PROP_FRAME_HEIGHT) # 4
print(cv2.CAP_PROP_BRIGHTNESS) # 10
cap.set(cv2.CAP_PROP_FRAME_WIDTH, frameWidth) # 参数:3:在视频流的帧的宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frameHeight) # 参数:4:在视频流的帧的高度
cap.set(cv2.CAP_PROP_BRIGHTNESS, 100) # 参数:10:图像的亮度(仅适用于照相机)