这是我参与更文挑战的第21天,活动详情查看: 更文挑战
OpenCV
是一个C++
库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python
中常使用OpenCV
库实现图像处理。
本文将介绍如何在Python3
中使用OpenCV
设置摄像头分辨率。
设置摄像头分辨率
通常在Python3
中调用Opencv
时,在创建完 VideoCapture
对象并成功打开摄像头后,可以使用函数 video.get(propId)
来获得视频的一些参数信息。
这里propId
可以是 0
到 18
之间的任何整数。每一个数代表视频的一个属性,详情可以见下表。
方法 | 解释 |
---|---|
cv2.VideoCapture.get(0) |
视频文件的当前位置(播放)以毫秒为单位 |
cv2.VideoCapture.get(1) |
基于以0开始的被捕获或解码的帧索引 |
cv2.VideoCapture.get(2) |
视频文件的相对位置(播放):0=电影开始,1=影片的结尾。 |
cv2.VideoCapture.get(3) |
在视频流的帧的宽度 |
cv2.VideoCapture.get(4) |
在视频流的帧的高度 |
cv2.VideoCapture.get(5) |
帧速率 |
cv2.VideoCapture.get(6) |
编解码的4字-字符代码 |
cv2.VideoCapture.get(7) |
视频文件中的帧数 |
cv2.VideoCapture.get(8) |
返回对象的格式 |
cv2.VideoCapture.get(9) |
返回后端特定的值,该值指示当前捕获模式 |
cv2.VideoCapture.get(10) |
图像的亮度(仅适用于照相机) |
cv2.VideoCapture.get(11) |
图像的对比度(仅适用于照相机) |
cv2.VideoCapture.get(12) |
图像的饱和度(仅适用于照相机) |
cv2.VideoCapture.get(13) |
色调图像(仅适用于照相机) |
cv2.VideoCapture.get(14) |
图像增益(仅适用于照相机)(Gain在摄影中表示白平衡提升) |
cv2.VideoCapture.get(15) |
曝光(仅适用于照相机) |
cv2.VideoCapture.get(16) |
指示是否应将图像转换为RGB布尔标志 |
cv2.VideoCapture.get(17) |
× 暂时不支持 |
cv2.VideoCapture.get(18) |
立体摄像机的矫正标注(目前只有DC1394 v.2.x后端支持这个功能) |
与get
方法对应的就是set
方法,因此其中的一些值可以使用video.set(propId, value)
来修改。
value
就是你想要设置成的新值。
查看摄像头的分辨率可以使用 video.shape
函数,其中前两个值分别是高、宽值。
默认情况下,摄像头的分辨率的为:640X480
,我们可以使用set
方法对其修改。
如改为320X240
:
video.set(3, 320), video(4, 240)。
复制代码
代码案例
下面是一个设置摄像头分辨率的案例:
import cv2
if __name__ == "__main__":
webcam = cv2.VideoCapture(0)
if not webcam.isOpened():
print("can't open the camera!!!")
# cv2.namedWindow("video", 0)
# cv2.resizeWindow("video", 960, 720)
# method 1:
webcam.set(3, 1920) # width=1920
webcam.set(4, 1080) # height=1080
# method 2:
# webcam.set(cv2.CAP_PROP_FRAME_WIDTH, 960)
# webcam.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
while True:
ret, frame = webcam.read()
print(frame.shape[:2]) # just need the first two values.
cv2.imshow("video", frame)
# Hit 'q' on the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Release handle to the webcam
webcam.release()
cv2.destroyAllWindows()
复制代码
以下方法可以用来改变窗口的显示大小,但是不等于摄像头的分辨率。
cv2.namedWindow("video", 0)
cv2.resizeWindow("video", 960, 720)
复制代码
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END