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
随机推荐
- docker compose环境搭建
概述 Docker Compose提供一个简单的基于YAML配置语言.用于描写叙述和组装多容器的分布式应用. 使用docker定义和执行复杂的应用.使用compose,能够在一个文件中,定义多容器的应 ...
- v-model在其它元素以及类型上的用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- OpenStack源码系列---起始篇
近一年来我负责公司云点的自动化部署工作,包括公司自有云平台方案.XenServer.vSphere.Ovirt和OpenStack的自动化安装部署,目前已经到了OpenStack这一部分.自动化部署首 ...
- ActionFilterAttribute之HtmlFilter,压缩HTML代码
当开启这个过滤器后,最终生成的HTML代码将会被压缩一下,在流量很大的网站中,能减少带宽成本就减少一点,何乐而不为? [csharp] view plaincopy using System; usi ...
- 翻译:A Tutorial on the Device Tree (Zynq) -- Part I
A Tutorial on the Device Tree (Zynq) -- Part I 此教程的目的 本教程是针对Xilinx' Zynq-7000 EPP设备(一个集成了FPGA的ARM Co ...
- linux 输入子系统(4) intput_dev 接口描述
Name struct input_dev - represents an input device Synopsis struct input_dev { const char * name; // ...
- HTTP请求中带有特殊字符"|",返回400错误
Java平台,服务器是Tomcat8,前端ajax访问服务器时,F12返回400错误,经分析,URL地址中get传参值里面含有“|“, Invalid character found and RFC ...
- RabbitMQ Connector
https://ci.apache.org/projects/flink/flink-docs-master/dev/connectors/rabbitmq.html RabbitMQ Source ...
- 集群环境搭建-SSH免密码登陆(二)
1.打开sshd配置 命令: vi /etc/ssh/sshd_config 找到以下内容,并去掉注释符”#“ RSAAuthentication yes PubkeyAuthentication y ...
- SimpleAdapter ArrayAdapter用法
listView = (ListView) findViewById(R.id.list_main); /* String[] strings = {"A","A&quo ...