type
status
date
slug
summary
tags
category
icon
password
😀
无论在任何类型的计算机视觉任务中,处理图像或视频都是其中的核心要素,绝大多数计算机视觉都会使用图像或视频作为数据输入的形式。此外,任何项目都应该可以在完成任何类型的处理后生成一些数据,这些数据可以以图像或者其它类型形式的输出。在计算机视觉中,由于这些类型的项目(例如,要处理的图像为输入、由机器学习算法生成的模型处理信息、输出目标信息)的固有特性,因此项目的信息流(输入——处理——输出)间也具有特殊的相关性。 本文主要介绍将使用OpenCV处理构建计算机视觉应用程序所必需的图像和视频。
 

📝 主旨内容

相关函数:

notion image
 
 
  1. cv2.imwrite() 用于保存图像文件。
  1. cv2.VideoCapture()
cv2.VideoCapture()作为从不同来源捕获视频的类,例如图像序列、视频文件和相机。其也可以实时捕获相机画面。
cv2.VideoCapture()所必需的参数是index_camera,它指示要读取的相机的索引。如果有一个摄像头连接到计算机,则它的索引为0,如果有第二台摄像头,可以通过传递参数值1来选择它,以此类推;需要注意的是,该参数的类型是int。
建立一个要使用的对象capture:
capture = cv2.VideoCapture(args.index_camera)
使用capture.isOpened()用于检查连接是否已正确建立,如果无法建立连接,该函数返回False;如果正确初始化,则返回True.
使用capture.read()从capture对象获取相机帧
使用capture.release()用于释放capture对象的所有内容
  1. cv2.cvtColor(),见:
  1. cv2.VideoWriter(args.output_video_path, fourcc, int(fps), (int(frame_width), int(frame_height)), False) 用于保存视频文件。
指定视频编码器:cv2.VideoWriter_fourcc(*'XVID') 也可以使用以下方式指定视频编码器:cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
cv2.VideoWrite的最后一个参数值为False表示以灰度方式写入视频。如果我们想创建彩色视频,最后一个参数为True。
下图展示了OpenCV中使用cv2.VideoWriter()创建视频文件时应考虑的主要因素。在创建的名为video_example.avi视频中,FOURCC值为XVID,视频文件格式为AVI(*.avi),同时最后,应设置视频每一帧的FPS和尺寸。
同时,cv2.VideoWriter()的最后一个参数值是False表示以灰度方式写入视频。如果我们想要创建彩色视频,最后一个参数值为True。eg:
out_gray = cv2.VideoWriter(args.output_video_path, fourcc, int(fps), (int(frame_width), int(frame_height)), False)
notion image

1.图像的读取与写入

1.1 读取图像

 

1.2 写入图像

 

1.3 计算机视觉项目处理流程示例

 

2.读取相机画面和视频文件

2.1 读取相机画面

 

2.2 访问捕获画面对象的属性

 

2.3 保存相机画面

 

2.4 读取视频文件

 

3.保存视频文件

3.1 计算帧率FPS

 

3.2 写入视频文件流程

 

4.视频文件属性详解

4.1 获取视频对象属性

 

4.2 视频属性的使用

🤗 总结归纳

计算机视觉项目中的常见信息流是先加载一些图像,进行处理,最后输出处理后的图像。因此,处理图像和文件是计算机视觉项目的关键要素。就视频流而言,主要类包括 cv2.VideoCapture 和 cv2.VideoWriter。在编写视频文件时,需要注意视频编解码器和视频文件格式间的匹配,典型的编解码器包括 DIVX、XVID、X264 和 MJPG,而典型的视频文件格式包括 AVI(.avi)、MP4(.mp4)、QuickTime(.mov) 和 Windows Media Video(.wmv)。
同时介绍了 FPS 的概念以及如何在程序中计算它。此外,展示了如何获取 cv2.VideoCapture对象的所有属性,以及如何使用它们加载视频并反向播放。

📎 参考文章

  • 一些引用
  • 引用文章
 
💡
有关OpenCV安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
01-OpenCV简介与图像处理基础03-OpenCV绘制图形与文本
  • Giscus
  • Cusdis
  • Utterance
Naipings
Naipings
一个普通的大学生,分享自己学习的“有趣”知识
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉 感谢您的支持 🎉
-- 点击收藏不迷路 ---
👏欢迎更新体验👏