Opencv读写文件
HSV也是用和RGB差不多的方式来表达像素,每个整形(integer) 向量分别表示一个B,G,R通道,其他的色彩空间,也用同样的方式来表示像素,只是取值范围和通道数目不同HSV的色彩空间的色度值范围 0-180.
>>> img = np.zeros((3,3),dtype=np.uint8)
>>> img.shape
(3, 3)
如果将图像的格式转化为BGR格式的话,shape则会返回(3,3,3),这就表名每个像素存在三个通道。
>>> img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
>>> img.shape
(3, 3, 3)
我们可以读取一种格式的图像文件,然后将其转化为另一种格式。例如下面的代码将会从PNG转化为JPEG
import cv2
image = cv2.imread("MyPic.png")
cv2.imwrite("MyPic.jpeg","image")
下面列出的选项可以作为imread()函数的参数:
- IMREAD_ANYCOLOR = 4
- IMREAD_ANYDEPTH = 2
- IMREAD_COLOR = 1
- IMREAD_GRAYSCALE = 0
- IMREAD_LOAD_GDAL = 8
- IMREAD_UNCHANGED = -1
OpenCv提供了VideoCapture类和VideoWrite类来支持各种格式的视频文件支持的格式类型会因系统的不同而不同,在达到视频末尾之前VideoCapture 通过read()函数来获取新的帧,每帧是一副给予BGR格式的图像。可以将一副图像传递给VideoWrite类的write()函数,该函数会将这副图像写入指定文件中,下面是一个示例,该示例读取AVI文件的帧,并采用YUV颜色编码将其写入另一个帧中。
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 12 16:47:18 2017 @author: x-power
""" import cv2
videoCapture = cv2.VideoCapture("MyInput.avi") fps = videoCapture.get(cv2.CAP_PROP_FPS)
size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT))) videoWrite = cv2.VideoWrite("MyOutputVid.avi",cv2.VideoWriter_fourcc('I','','',''),fps,size)
success,frame = videoCapture.read()
while success:
videoWrite.write(frame)
success,frame = videoCapture.read()
要为VideoWrite类的构造函数指定视频文件名,这个文件名对应的文件若是存在,则会被覆盖,也需要指定视频的编解码器,编解码器的可用性根据系统的不同而不同,下面是一些常用的选项。
cv2.VideoWrite_fourcc('I','4','2','0'):该选项是一个为压缩的YUV颜色编码是4:2:0色度子采样。这种编码有很好的兼容性,但会产生较大文件,文件扩展名为 .avi。
cv2.VideoWrite_fourcc('P','T','M','1'):该选项时MPEG-1编码类型,文件扩展名为.avi
cv2.VideoWrite_fourcc('X','V','T','D'):该选项时MPEG-4编码类型,如果希望得到视频大小为平均值,推荐使用此选项,文件扩展名为.avi
cv2.VideoWrite_fourcc('T','H','E','O'):该选项时Ogg Vorbis文件扩展名为,ogv
cv2.VideoWrite_fourcc('F','L','V','1'):该选项时一个flash视频,文件扩展名为.flv
帧速率和帧大小必须要指定,因为时从另一个视频复制视频,这些属性可以通过VideoCapture类的get函数得到。
如何捕获摄像头的帧
VideoCapture类可以获得摄像头的帧流,但对摄像头而言,通常不是用视频的文件名来构造VideoCapture类,而是需要传递摄像头的设备索引(device index),下面的例子捕获摄像头10秒的视频信息 并将其写入avi文件当中。
Opencv读写文件的更多相关文章
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...
- OpenCV读写视频文件解析
OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在 OpenCV 中,VideoCapture ...
- 光流算法:关于OpenCV读写middlebury网站给定的光流的代码
Middlebury是每个研究光流算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了光流算法的进展.Middlebury提供的标准库,其计算出的光流保存在后缀名为. ...
- OpenCV读写图像文件解析
OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
随机推荐
- spi flash 操作
W25Q16V 是华邦出的一颗 spi flash. 25系列是比较通用的一个系列. 后面的数字 16 跟容量有关, 16 表示 16Mbits, 相当于 2MB. 与此类似的还有 W25Q128V ...
- Entity Framework 6 Code First系列1: 实体类1:1配置
从4.1版本开始,EF开始支持Code First模式,值得注意的是Code First不是和DataBase First或Model First平级的概念,而是和EDM平级的概念.使用Code Fi ...
- Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go? | Hacker News https://news.ycombinator.com/i ...
- bind_ip
https://docs.mongodb.com/manual/reference/configuration-options/index.html 192.168.2.* --23T10:: I C ...
- db_create_file_dest
<span><span>RAC中.将db_create_file_dest改动为本地路径,在创建表空间指定ASM磁盘组的时候还能够直接'+DATA'么?</span> ...
- nodejs的request模块
request模块让http请求变的更加简单.(作为客户端,去请求.抓取另一个网站的信息) request的GitHub主页: https://github.com/request/request 最 ...
- createDocumentFragment 文档碎片提升dom增删的性能
原理: 操作dom会使得页面进行重新渲染,如果 经常性的对dom就行操作或者一次性操作dom较多,每一次操作都会使页面进行重新渲染,降低页面加载性能. 针对IE9以下,可以使用文档碎片(documen ...
- java反射机制与动态加载类
什么是java反射机制? 1.当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言.我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射. IT行业里这么说,没有 ...
- 初探linux子系统集之led子系统(二)【转】
本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37606487 巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一 ...
- Linux 进程等待队列【转】
本文转载自:http://blog.csdn.net/dlutbrucezhang/article/details/9212067 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制 ...