码迷,mamicode.com
首页 > 编程语言 > 详细

OpenCV-Python基础教程2-打开摄像头

时间:2019-01-19 12:13:27      阅读:577      评论:0      收藏:0      [点我收藏+]

标签:mod   data   format   对比   视频播放   rcc   div   python基础   修改   

一、打开摄像头

import cv2
# 打开摄像头并灰度化显示
capture = cv2.VideoCapture(0)
while(True):
    # 获取一帧
    ret, frame = capture.read()
    # 将这帧转换为灰度图
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow(frame, gray)
    # 如果输入q,则退出
    if cv2.waitKey(1) == ord(q):
        break

cv2.VideoCapture(0)创建VideoCapture对象,参数0表示摄像头编号,如果你有两个摄像头,也可以传入1

# 获取捕获的分辨率
# propId可以直接写数字,也可以用OpenCV的符号表示
width, height = capture.get(3), capture.get(4)
print(width, height)
# 以原分辨率的一倍来捕获
capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, width * 2)
640.0 480.0
我的摄像头分辨率是640 x 480.通过cap.get(propId)可以获取摄像头的一些属性。比如分辨率、亮度和对比度等。propId是从0~18的数字,我例举几个:
cv::VideoCaptureProperties { 
  cv::CAP_PROP_POS_MSEC =0, 
  cv::CAP_PROP_POS_FRAMES =1, 
  cv::CAP_PROP_POS_AVI_RATIO =2, 
  cv::CAP_PROP_FRAME_WIDTH =3, 
  cv::CAP_PROP_FRAME_HEIGHT =4, 
  cv::CAP_PROP_FPS =5, 
  cv::CAP_PROP_FOURCC =6, 
  cv::CAP_PROP_FRAME_COUNT =7, 
  cv::CAP_PROP_FORMAT =8, 
  cv::CAP_PROP_MODE =9, 
  cv::CAP_PROP_BRIGHTNESS =10, 
3:高度, 4:宽度, 5:帧率, 8:格式, 9:模式。。。
想了解完整的属性列表可以参考:
VideoCaptureProperties
也可以使用cap.set(propId, value)来修改属性值

二、播放本地视频

# 播放本地视频
capture = cv2.VideoCapture(4.视频展台的使用视频.mp4)
while(capture.isOpened()):
    ret, frame = capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow(frame, gray)
    if cv2.waitKey(30) == ord(q):
        break

和打开摄像头一样,把摄像头编号换成视频的路径就可以播放本地视频。cv2.waitKey的参数0表示无限等待,数值越大,视频播放越慢,反之,则越快。通常设置25到30

三、录制视频

保存图片使用的是cv2.imwrite(),要保存视频,需要创建一个VideoWriter对象,需要传入四个参数

  • 输出的文件名,如’output.avi’
  • 编码方式FourCC码
  • 帧率FPS
  • 要保存的分辨率大小
FourCC是用来指定视频编码方式的四字节码
capture = cv2.VideoCapture(0)
# 定义编码方式并创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*MJPG)
outfile = cv2.VideoWriter(output.avi, fourcc, 25., (640, 480))
while(capture.isOpened()):
    ret, frame = capture.read()
    if ret:
        outfile.write(frame)  # 写入文件
        cv2.imshow(frame, frame)
        if cv2.waitKey(1) == ord(q):
            break
    else:
        break

四、小结

 



 

OpenCV-Python基础教程2-打开摄像头

标签:mod   data   format   对比   视频播放   rcc   div   python基础   修改   

原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10291177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!