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
随机推荐
- mysql 环境变量之 group_concat_max_len
今天使用mysql group_concat()函数,对查询的数据进行字符串连接操作. 不过由于查询的结果较多,连接后的结果很长导致不能完全显示. 查询手册发现如下说明: (先说说group_conc ...
- JavaScript 的 MVP 框架 Riot.js
Riot.js 详细介绍 Riot.js是一个客户端模型-视图-呈现(MVP)框架并且它非常轻量级甚至小于1kb.尽管他的大小令人难以置信,所有它能构建的有如下:一个模板引擎,路由,甚至是库和一个严格 ...
- log Configuration
Log4j – Configuring Log4j 2 - Apache Log4j 2 https://logging.apache.org/log4j/2.x/manual/configurati ...
- spring cloud 配置纲要Properties
名称 默认 描述 encrypt.fail-on-error true 标记说,如果存在加密或解密错误,进程将失败. encrypt.key 对称密钥.作为一个更强大的替代方案,考虑使用密钥库. ...
- design.js
//模块式开发 var myNamespace = (function () { var myPrivateVar = 0; var myPrivateMethod = function (foo) ...
- css3中我们不知道的一些属性
1.图片作为边框:border-image; 2.圆角问题:border-radius:上.下.左.右: 3.字体的阴影与自动换行: 阴影: h1 {text-shadow: 5px 5px 5px ...
- HDU3374 String Problem —— 最小最大表示法 + 循环节
题目链接:https://vjudge.net/problem/HDU-3374 String Problem Time Limit: 2000/1000 MS (Java/Others) Me ...
- JS点击查看更多内容 控制段落文字展开折叠
JavaScript+jQuery实现的文字展开折叠效果,点击文字后文字内容会完整的显示出来,控制段落来显示文字,不需要的时候,可以再次点击后将内容折叠起来,也就是隐藏了一部分内容.点击查看更多的功能 ...
- 序列流、对象操作流、打印流、标准输入输出流、随机访问流、数据输入输出流、Properties(二十二)
1.序列流 * 1.什么是序列流 * 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.* 2.使用方式 * 整合两个 ...
- 使用gcc找出头文件的路径
参考 http://stackoverflow.com/questions/13079650/how-can-i-find-the-header-files-of-the-c-programming- ...