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读写文件的更多相关文章

  1. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...

  2. OpenCV读写视频文件解析

    OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在 OpenCV 中,VideoCapture ...

  3. 光流算法:关于OpenCV读写middlebury网站给定的光流的代码

    Middlebury是每个研究光流算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了光流算法的进展.Middlebury提供的标准库,其计算出的光流保存在后缀名为. ...

  4. OpenCV读写图像文件解析

    OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...

  5. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  6. 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库

    57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...

  7. Python读写文件

    Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...

  8. php中并发读写文件冲突的解决方案

    在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...

  9. C#读写文件的方法汇总_C#教程_脚本之家

    C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm

随机推荐

  1. 【转载】VS工具使用——代码图

    代码图:     心想,反正也调不出来,就试试这个东西吧,一打开,就认识到自己发现了一个新大陆:这个代码图可以让我们对一个工程文件有大体的了解,即函数的调用关系等.它是一个VS2013自带工具生成函数 ...

  2. Python常用的包

    Python常用的处理数据的包和它的Tutorial(点击每个包的名称): Numpy:提供对多维数组的支持,支持矢量运算,速度快 matplotlib.pyplot:图表的绘制 Pandas:基于 ...

  3. MUI-折叠面板效果accordion

    在做开发的过程中我们经经常使用到折叠面板. 那我们来看下折叠面板到底是怎么使用. 废话不多说. 代码粘下来: <!DOCTYPE html> <html> <head&g ...

  4. fstab文件解析

    1 这个文件的用途 这个文件是启动时自动挂载指定的磁盘或者分区到系统目录下用的,提供给mount命令用. 2 文件解析 每一行是一次mount操作. 磁盘或者分区    挂载的目录     挂载的磁盘 ...

  5. 一个简单的servlet

    1.创建一个自己的servlet文件,继承HttpServlet MyServlet.java package com.jmu.ccjoin.controller; import java.io.IO ...

  6. EasyUI+Python-flask实现CRUD应用

    1.需求分析 需求:应用easyui制作前端表格数据显示,flask制作后端路由 环境搭建略 2.easyui前端实现 2.1 easyui是前端实用的一个框架,这里我们要实现的是easyui的CRU ...

  7. python模拟登陆discuz论坛

    #! /usr/bin/env python # -*- coding: utf-8 -*- import urllib2, urllib, cookielib, re, time class Rob ...

  8. 织梦dedecms页面中增加二维码功能的实现方法

    本文介绍了在dedecms中增加二维码功能的实现方法,有时需要在dedecms页面增加二维码,方便手机用户访问,有需要的朋友参考下. 本节内容: dedecms中增加二维码功能   1.打开/incl ...

  9. HDU - 1874 畅通工程续(最短路径)

    d.已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. s.最短路径 c.Dijkstra单源最短路 /* Dijkstra单源最短路 权值必须是非负 单源最短路径,Dijkstra算法 ...

  10. LA-4356&&hdu-2469 (极角排序+扫描线)

    题目链接: Fire-Control System Time Limit: 12000/5000 MS (Java/Others)     Memory Limit: 32768/32768 K (J ...