opencv从视频文件读取视频内容,从摄像头读取保存视频内容

这篇具有很好参考价值的文章主要介绍了opencv从视频文件读取视频内容,从摄像头读取保存视频内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、argparse模块

1. 定义

(1)argparse模块使编写用户友好的命令行接口变得容易。

(2)程序定义了它需要的参数,而argparse将找出如何从sys.argv中解析这些参数。

(3)argparse模块还会自动生成帮助和使用消息,并在用户给程序提供无效参数时发出错误信息。

2. 讲解

import argparse # 导入库
parser = argparse.ArgumentParser() # 获取所有参数

parser.add_argument(“-n1”, “–number one”, help=“第一个参数”, type=int) # 添加参数1

parser.add_argument(“-n2”, “–number two”, help=“第二个参数”, type=int) # 添加参数2
args = parser.parse_args() # 解析所有参数

实战:

import argparse        # 导入库
parser = argparse.ArgumentParser()    # 获取所有参数

# print(parser)

#添加参数
#第一个参数
parser.add_argument('number1',help='第一个参数',type=int)
#第二个参数
parser.add_argument('number2',help='第二个参数',type=int)

#解析参数
args = parser.parse_args()

#获取参数
print('第一个参数',args.number1)
print('第二个参数',args.number2)
print('所有参数',args)

注意,我们运行该代码时,需要在命令行运行
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

下面我们就运用这个argparse来动态加载我们指定的图片

import cv2
import argparse

#加载参数
parse = argparse.ArgumentParser()

#添加参数
parse.add_argument('path_image',help='path to input the image')

#解析参数
args = parse.parse_args()

#加载图片,方式一
image = cv2.imread(args.path_image)
#展示图片
cv2.imshow('image',image)


#加载图片,方式二。将图片路径转换成字典形式
args_dict = vars(parse.parse_args()) #{'path_image':'123.png'}
image2 = cv2.imread(args_dict['path_image'])
#展示图片
cv2.imshow('image2',image2)

#等待
cv2.waitKey(0)
#关闭窗口
cv2.destroyAllWindows()

终端命令行运行
python 03.read_picture.py 123.png
两种方式都展示了照片
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

这样,当我们读取不同图片时,就可以在命令行动态指定,不需要我们经常修改代码

二、读取、处理、保存图片

1.读取图片

cv2.imread()

2.灰度处理

cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

3.保存图片

cv2.imwrite(img2_path, gray_img) #img_path: 图片路径,gray_img: 处理后的图片

import cv2
import argparse

#加载参数
parse = argparse.ArgumentParser()

#添加参数
parse.add_argument('ori_image',help='path to input the image')
parse.add_argument('out_image',help='save the new image')

#解析参数
args = parse.parse_args()

#加载图片。将图片路径转换成字典形式
args_dict = vars(parse.parse_args()) #{'path_image':'123.png'}
image = cv2.imread(args_dict['ori_image'])

#图片灰度处理
gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

#保存处理后的图片
cv2.imwrite(args_dict['out_image'],gray_image)

#显示图片
cv2.imshow('ori_image',image)
cv2.imshow('out_image',gray_image)

cv2.waitKey(0)
cv2.destroyAllWindows()

命令行执行
python .\04.图片处理.py .\123.png 234.png
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

灰度处理成功,并且保存图片成功
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

三、读取摄像头、视频文件

人脸识别,人脸支付领域应用比较多
交通领域车辆车牌识别
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

  1. cv2.VideoCapture() 从摄像头获取视频流

  2. capture.get() 获取帧的属性

  3. capture.isOpened() 判断摄像头是否打开

  4. cv2.waitKey(20) & 0xFF == ord(‘q’) 键盘输入q退出

  5. cv2.waitKey(20) & 0xFF == ord(‘c’) 键盘输入c截取帧

  6. capture.release() 释放资源

项目实战

1.从摄像头读取

import cv2
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("index_camera", help="the camera ID", type=int)
args = parser.parse_args()
print("the camera index :", args.index_camera)

capture = cv2.VideoCapture(args.index_camera) # 视频捕获

frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH) # 帧的宽度
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT) # 帧的高度
fps = capture.get(cv2.CAP_PROP_FPS) # 每秒的帧数
print("帧的宽度: {}".format(frame_width))
print("帧的高度: {}".format(frame_height))
print("FPS: {}".format(fps))

if capture.isOpened() is False:
    print("Error Camera !")

# 读取视频直到关闭
while capture.isOpened():
    # 通过摄像头,一帧一帧的捕获
    ret, frame = capture.read()
    if ret is True:
        # 显示捕获的帧
        cv2.imshow("frame", frame)
        # 将捕获的帧转化为灰度的帧
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 显示灰度的帧
        cv2.imshow("gray frame", gray_frame)
        # 键盘输入q,退出视频捕获,关闭摄像头
        if cv2.waitKey(20) & 0xFF == ord('q'):
            break
    else:
        break

# 释放
capture.release()
cv2.destroyAllWindows()

#运行流程
Terminal —> python read_camera.py 0

由于我这台台式机没安装摄像头,所以没有输出视频
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

正常有摄像头电脑会显示出视频

并输出相关我们打印的数据
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

2.从视频文件读取视频内容

# 1 加载库

import cv2
import argparse

# 2 获取参数
parser = argparse.ArgumentParser()

# 3 添加参数
parser.add_argument("video_path", help="the path to the video file")

# 4 解析参数
args = parser.parse_args()

# 5 加载视频文件
capture = cv2.VideoCapture(args.video_path)

#获取视频参数
frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH) # 帧的宽度
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT) # 帧的高度
fps = capture.get(cv2.CAP_PROP_FPS) # 每秒的帧数

print("视频宽度: {}".format(frame_width))
print("视频高度: {}".format(frame_height))
print("FPS: {}".format(fps))



# 6 读取视频
ret, frame = capture.read() # ret 是否读取到了帧(图片)


while ret:
    cv2.imshow("video", frame)
    #一旦读取到,就继续一帧一帧地往下读取
    ret, frame = capture.read() # 继续读取帧
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break


capture.release()
cv2.destroyAllWindows() # 关闭

命令行执行
python .\06.从视频文件读取视频.py .\buildings.mp4
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

视频可以顺利播放
opencv从视频文件读取视频内容,从摄像头读取保存视频内容,计算机视觉,opencv,音视频,人工智能,python,计算机视觉

3.保存从摄像头读取的视频

api介绍

  1. 视频编码:
    fourcc = cv2.VideoWriter_fourcc(*‘XVID’)

  2. 灰度写入视频文件
    cv2.VideoWriter(args.video_output, fourcc, int(fps), (int(frame_width), int(frame_height)), False)

实战代码:文章来源地址https://www.toymoban.com/news/detail-836026.html

# 1 导入库
import cv2
import argparse

# 2 获取参数
parser = argparse.ArgumentParser()

# 3 添加参数
parser.add_argument("video_output", help="the path to the output video")

# 4 解析参数
args = parser.parse_args()

# 5 捕获摄像头
capture = cv2.VideoCapture(0)

# 6 是否打开了摄像头
if capture.isOpened() is False:
    print("Camera Error !")

# 7 获取帧的属性:宽,高,以及fps
frame_width = capture.get(cv2.CAP_PROP_FRAME_WIDTH) # 宽
frame_height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT) # 高
fps = capture.get(cv2.CAP_PROP_FPS)

# 8 对视频进行编码
fourcc = cv2.VideoWriter_fourcc(*"XVID")

#false表示灰度方式写入
output_gray = cv2.VideoWriter(args.video_output, fourcc, int(fps), (int(frame_width), int(frame_height)), False)

# 9 读取摄像头
while capture.isOpened():
    ret, frame = capture.read() # 一帧一帧地读取
    if ret is True:
        # 10 将读取到的帧转换为灰度
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 11 将转换后的帧写入都新的视频文件中
        output_gray.write(gray_frame)
        # 12 显示视频
        cv2.imshow("gray", gray_frame)
        # 13 等待或按q退出
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

# 14 释放资源
capture.release()
output_gray.release()
cv2.destroyAllWindows()

到了这里,关于opencv从视频文件读取视频内容,从摄像头读取保存视频内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv基础: 视频,摄像头读取与保存的常用方法

    当然还可以从视频中抓取截图,所以现在聊一下常用的抓取视频截图的的方法。 上面有三种构造方法, 第一种是无法构造方法。 第二种参数device是一个数字。 一般笔记本如此写cv2.VideoCapture(0); 因为默认是0 ,如果有多个摄像头,就需要看设置的摄像头代表的数字了。 第二种

    2024年02月09日
    浏览(42)
  • opencv入门到精通——图片,视频,摄像头的读取与保存

    OpenCV是一个流行的开源计算机视觉库,由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包,可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C++语言编写,同时也支持Python、Java、C等语言。由于其开源和广泛使用的

    2024年02月08日
    浏览(53)
  • OpenCV中读取、显示、保存摄像头视频讲解与实战(附Python源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ OpenCV不仅能够处理图像,还能够处理视频。视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取。这样,就能够使用图像处理的方法对这些图像进行处理,进而达到处理视频的目的。要处理视频,需要先对视频进

    2024年02月05日
    浏览(51)
  • OpenCV保存摄像头视频和视频文件操作实战(附Python源码)

    需要源码和视频请点赞关注收藏后评论区留言私信~~~ 在实际开发过程中,很多时候希望保存一段视频,为此,OpenCV提供了VideoWriter类,下面先熟悉一下里面的各种方法 VideoWriter类的常用方法包括它的构造方法,write方法和release方法 语法如下 VideoWriter object=cv2.VideoWriter(filename

    2024年02月07日
    浏览(64)
  • Opencv(C++)系列学习---读取视频文件和打开摄像头

    今天学习的这两个内容比较简单,话不多说,直接上代码! 目录 【1】读取视频文件 【2】摄像头读取视频 运行结果:  这段代码较为简单,有兴趣的同学也可以挑战一下,在视频读取上加个进度条,可以通过鼠标拖动进度条到指定位置,像平时我们用的视频播放器一样,主

    2024年02月16日
    浏览(52)
  • Opencv(C++)笔记--打开摄像头、保存摄像头视频

    关键代码语句: ① VideoCapture cam(0); ② cam.read(img); ③ imshow(\\\"cam\\\", img); 关键代码: ①VideoWriter vw ②vw.open(): fourcc指定编码格式(常见编码方式)、 fps指定帧率、 Size指定大小 ③vw.write() 注:在Windows上执行上述代码可能会报以下错误: 解决方法:在输出的网址下载对应版本的库

    2024年02月11日
    浏览(61)
  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(72)
  • 使用OpenCV调用摄像头和读取视频图片

    要捕获视频,你需要创建一个 VideoCapture 对象。它的参数是设备索引的名称。设备索引就是指定哪个摄像头的数字。正常情况下,内部摄像头可以通过传入0来调用,传递1来选择外置的第二个相机,以此类推。在此之后,你可以逐帧捕获。但是在最后,不要忘记释放俘虏。 直

    2024年02月08日
    浏览(53)
  • OpenCv:采集摄像头视频、读取视频帧与视频录制

    目录 一、涉及OpenCv函数 二、什么是帧、帧的大小代表什么 三、摄像头获取视频数据 四、录制视频并保存 从设备,可以是摄像头可以是本地视频, 获取视频的函数 cv.VideoCapture()。 本函数作用在于创建一个VideoCapture或者VideoWriter对象,真正的读取和写入是通过创建的对象进行

    2024年02月16日
    浏览(50)
  • OpenCV4(C++)—— 视频和摄像头的加载、显示与保存

      视频或摄像头的加载是使用 cv::VideoCapture 类。(这个类和 ifstream 类比较相似,视频或摄像头的加载和文本文件操作是大致相同。主要步骤:(1)加载(打开)视频或视像头。(2) 判断加载是否成功。 (3)读取内容。(4)关闭。) 注意:   (1)VideoCapture类变量同时

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包