相关文章推荐
逆袭的鸵鸟  ·  python opencv yuv 转 ...·  1 月前    · 
傻傻的佛珠  ·  Mybatis union ...·  4 月前    · 
大力的饺子  ·  creator js pb ...·  1 年前    · 
酷酷的电梯  ·  python ...·  1 年前    · 

返回Opencv-Python教程

原文链接:http://www.juzicode.com/archives/5380

OpenCV-Python教程:读取图像、显示、写入图像 一文介绍了怎么处理静态图像文件,这篇文件介绍怎么从相机、视频文件、动态图片文件获取图像,以及写入视频文件的方法。

1、从视频文件获取图像

使用cap = cv2.VideoCapture(‘文件名称’)构建视频文件的cap实例。

cap.read()方法逐帧提取视频,每一帧为一幅图像,cap.read()方法返回的是一个二元组,下标0的元素值为True或False,如果为Flase表示读取文件完成。下标1的元素为图像对象,也是一个numpy数组类型的数据。

cap.isOpened()用来检查cap实例是否已打开。

cap.release()释放实例。

下面这个例子中读取视频文件并显示,达到播放的效果,同时加入了waitKey()返回值的判断,输入按键’Q’或者’q’就可以退出循环。在这里waityKey()返回的数值和0xff相与后再和字符的ord()值比较,是为了规避某些系统中waitKey()返回的数值在高字节为非0值的情况。

import cv2
print('VX公众号: 桔子code / juzicode.com')
print('cv2.__version__:',cv2.__version__)
cap = cv2.VideoCapture('..\\vtest.avi')
while cap.isOpened():
    ret, img = cap.read()
    if ret is not True:
        print("读取完成,退出")
        break      
    #处理img
    cv2.imshow('vedio', img)
    #检查按键
    key = cv2.waitKey(20) & 0xff
    if  key == ord('q') or key == ord('Q') :
        break
print('cap.isOpened():',cap.isOpened())
cap.release()
print('cap.isOpened():',cap.isOpened())

运行结果:

VX公众号: 桔子code / juzicode.com
cv2.version: 4.5.2
cap.isOpened(): True
cap.isOpened(): False

从运行结果看,cap.release()前cap.isOpened()的返回值一直为True。

2、从动态图片获取图像

来看看怎么用OpenCV解构Twitter大牛jagarikin的视觉错觉图 一文中我们看到gif格式图片可以看成视频文件,也可以用VideoCapture(文件名)方法打开gif格式的图片,操作过程和上述普通的视频文件类似。

3、从相机获取图像

打开相机需要用相机的设备编号(数值型整数)作为入参传入VideoCapture(相机编号),比如cap = cv2.VideoCapture(0)构建编号为0的相机访问实例,第2台相机则传入1,以此类推,后续步骤的处理方法和读取视频文件一样。

import cv2
print('VX公众号: 桔子code / juzicode.com')
print('cv2.__version__:',cv2.__version__)
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, img = cap.read()
    if ret is not True:
        print("读取失败,退出")
        break      
    #处理img
    cv2.imshow('vedio', img)
    #检查按键
    key = cv2.waitKey(20) & 0xff
    if  key == ord('q') or key == ord('Q') :
        break
print('cap.isOpened():',cap.isOpened())
cap.release()
print('cap.isOpened():',cap.isOpened())

4、写入视频文件

写视频文件需要创建VideoWriter对象,依次传入4个入参:

  • 第1个为文件名称;
  • 第2个为编码方式,其中编码方式和文件名称后缀有对应关系;
  • 第3个参数为每秒写入的帧数,参考数值为25,符合人眼习惯;
  • 第4个参数是图像大小,int类型;

常用的文件名称后缀和编码方式的对应关系有:

文件后缀编码方式
aviXVID
aviMJPG
avimp4v(小写)
mp4mp4v(小写)

编码方式需要创建VideoWriter_fourcc对象,比如可以用下面的2种方式创建MJPG类型的编码:

fourcc=cv2.VideoWriter_fourcc('M','J','P','G')
fourcc=cv2.VideoWriter_fourcc(*'MJPG')

图像大小可以通过cat.get(propId)方法获取,但是该方法获取的是float类型,需要转换为int类型再传入VideoWriter

cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) 
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = int(width)
height = int(height)

下面是一个创建XVID、MJPG、mp4v等3种编码方式视频文件的例子:

import cv2 print('VX公众号: 桔子code / juzicode.com') print('cv2.__version__:',cv2.__version__) #获取图像宽高 cap = cv2.VideoCapture(0) width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) width = int(width) height = int(height) print(width,height) #创建VideoWriter对象 fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi', fourcc, 25.0, (width, height)) fourcc = cv2.VideoWriter_fourcc(*'MJPG') out2 = cv2.VideoWriter('output2.avi', fourcc, 25.0, (width, height)) fourcc = cv2.VideoWriter_fourcc(*'mp4v') out3 = cv2.VideoWriter('output3.mp4', fourcc, 25.0, (width, height)) while cap.isOpened(): ret, img = cap.read() print(img.shape) if ret is not True: print("读取失败,退出") break #处理img cv2.imshow('vedio', img) out.write(img) out2.write(img) out3.write(img) #检查按键 key = cv2.waitKey(1) & 0xff if key == ord('q') or key == ord('Q') : break cap.release() out.release() out2.release() out3.release()

原文链接:http://www.juzicode.com/archives/5380

扩展阅读:

  1. OpenCV-Python教程
  2. OpenCV-Python教程:读取图像、显示、写入图像
返回Opencv-Python教程原文链接:http://www.juzicode.com/archives/5380OpenCV-Python教程:读取图像、显示、写入图像一文介绍了怎么处理静态图像文件,这篇文件介绍怎么从相机、视频文件、动态图片文件获取图像,以及写入视频文件的方法。1、从视频文件获取图像使用cap = cv2.VideoCapture(‘文件名称’)构建视频文件的cap实例。cap.read()方法逐帧提取视频,每一帧为一幅图像,cap.read()方法返回的是一个.
OpenCV 2- Python 指南 此库包含使用新cv2接口的 OpenCV - Python 库的 教程 IMP-本 教程 适用于 OpenCV 3x版本。 不是 OpenCV 2x IMP-本 教程 适用于 OpenCV 3x版本。 不是 OpenCV 2x IMP-本 教程 适用于 OpenCV 3x版本。 不是 OpenCV 2x 发送任何错误报告之前,请尝试使用 OpenCV 3x的示例 这些 教程 中使用的输入数据在“数据”文件夹中给出 有关官方 教程 ,请访问: : 这仅用于检查。 可能包含很多错误,请坚持使用官方 教程 。 要从源代码构建文档, 安装狮身人面像 下载/克隆此仓库并导航到基本文件夹 运行命令: make html ,html docs将在build / html /文件夹中提供
def read_frame_from_video(video_path, image_path): video_c apt ure = cv2.VideoC apt ure(video_path) images = [] idx = 0 while True: ret, frame = video_c apt ure.read() if re...
OpenCV 开发难免会针对 Camera 或者是 Video 做处理,有的时候需要将画面保留下来,这个时候最佳方案是保存成一个 .avi 的文件。 OpenCV 底层是用 FFMEPG 进行多媒体开发的,所以 OpenCV 它的长项不在于此,它只是提供了这种能力而已,如果要针对多媒体文件做复杂的处理,推荐的还是 FFMEPG 专业库。 OpenCV 用来创建 视频文件 的类是 VideoWr...
OpenCV 中从 视频文件 或摄像机中捕获视频的类是VideoC apt ure。该类提供 C++ API 用于从摄像机捕获视频或读取 视频文件 。 关于视频的读操作是通过VideoC apt ure类来完成的;视频的 操作是通过Video Write r类来实现的。 VideoC apt ure既支持从 视频文件 读取,也支持直接从摄像机(比如计算机自带摄像头)中读取。要想 获取 视频需要先创建一个VideoC apt ure对象,VideoC apt ure对象的创建方式有以下三种: 一、创建一个捕获对象,通过成员函数open()来设定打开的
python opencv 视频——cv2.Video Write r() 函数原型 cv2.Video Write r() Video Write r(filename, fourcc, fps, frameSize[, isColor]) -> <Video Write r object> 参数说明: 第一个参数是要保存的文件的路径 fourcc 指定编码器 fps 要保存的视频的帧率 frameSize 要保存的文件的画面尺寸 isColor 指示是黑白画面还是彩色的画面 示例代码1
opencv -contrib- python opencv - python 都是针对 OpenCV 计算机视觉库的 Python 接口。 opencv - python OpenCV Python 接口的官方版本,提供了基本的计算机视觉功能,包括 图像 处理、目标检测、视频分析等。 opencv -contrib- python OpenCV Python 扩展包,提供一些额外的计算机视觉功能。这些功能包括3D重建、特征检测、跟踪、人脸识别等。 OpenCV -contrib- python OpenCV 的扩展包,在 opencv - python 的基础上添加了很多额外的功能,由 OpenCV 社区其他开发者贡献,它提供了更多的识别和跟踪算法,如SIFT、SURF等,还提供了更多的人脸检测算法,如Facedetect和Cascade_classifier等。不过,使用 OpenCV -contrib- python 需要注意版本的兼容性问题,因为其版本更新频率比 OpenCV - python 高,需要根据自己的需求来选择适合的版本。 总之, opencv -contrib- python opencv - python 的扩展,提供了更多的计算机视觉功能,需要注意版本兼容性问题。用户可以根据实际需求,选择相应的版本,或者根据自己的开发需求进行选择。
CSDN-Ada助手: 嗨~好久未见你更新博文了,我们现在上线了AI创作助手哦~可为你的创作提供智能化帮助,快来试试吧~https://editor.csdn.net/md/?not_checkout=1&utmsource=blog_comment_recall,在编辑器页面右侧哦~~限免!! 同时我们为您准备了一份回归奖励,快来看看吧https://activity.csdn.net/creatActivity?id=10430&utmsource=blog_comment_recall Tesseract-OCR5.0软件安装和语言包安装(Windows系统) Joker clown: 语言包下不了咋