OpenCV-Python入门教程2-打开摄像头

一、打开摄像头

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

四、小结

 使用cv2.VideoCapture()创建视频对象,然后在循环中一帧一阵显示图像

cap.get(propId)获取视频属性,cap.set(propId, value)设置视频属性

cv2.VideoWriter()创建视频写入对象,用来录制、保存视频

参考网址:https://tianchi.aliyun.com/course/courseConsole?courseId=40992&chapterIndex=1&sectionIndex=3

 
 

 

转载于:https://www.cnblogs.com/gezhuangzhuang/p/10291177.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要去除图像的光照不均,可以使用一些图像处理技术。首先,你需要加载OpenCV-Python模块。可以使用pip进行安装,命令如下: ``` pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python ``` 安装完成后,可以使用以下步骤去除图像的光照不均: 1. 加载图像:使用`cv2.imread()`函数加载图像文件。 2. 将图像转换为灰度图像:使用`cv2.cvtColor()`函数将彩色图像转换为灰度图像。 3. 去除光照不均:有多种方法可以去除光照不均,一种常用的方法是使用自适应阈值处理。可以使用`cv2.adaptiveThreshold()`函数进行自适应阈值处理,通过调整参数来适应不同的图像。 4. 显示处理后的图像:使用`cv2.imshow()`函数显示处理后的图像。 下面是示例代码: ```python import cv2 # 加载图像 img = cv2.imread('image.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 去除光照不均 # 使用自适应阈值处理 adaptive_threshold = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2) # 显示处理后的图像 cv2.imshow('Processed Image', adaptive_threshold) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这样就可以去除图像的光照不均了。你可以根据需要调整自适应阈值处理的参数,以达到更好的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [jetson nano opencv 打开 CSI摄像头_opencv-python图形图像处理入门基础知识](https://blog.csdn.net/weixin_39775354/article/details/110121584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [opencv-python图形图像处理入门基础知识](https://blog.csdn.net/LaoYuanPython/article/details/108015331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值