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文件当中。

最新文章

  1. tips of my ubuntu 16.04 LTS
  2. MFC双缓冲绘图(2015.09.24)
  3. 为什么那么多人想开发一元夺宝类app?
  4. ccs3中icon转换为字体的方法
  5. Struts2(十三)国际化-internationalization
  6. tomcat The file is absent or does not have execute permission
  7. 【不积跬步,无以致千里】DELETE SINGLE IPTABLES RULES
  8. xlslib安装, aclocal-1.13: command not found, 安装升级autoconf-2.65.tar.gz, automake-1.13.tar.gz两个文件
  9. LINQ学习系列-----1.4 匿名对象
  10. 三、CSS样式——链接
  11. CentOS7 + Django2.1 + uwsgi + nginx配置
  12. CSS之2D转换模块
  13. java断言assert初步使用:断言开启、断言使用
  14. 安装win8/win10提示无法在驱动器0分区上安装windows解决方法
  15. 绝对干货!!css3字体图标—丰富的阿里图标库iconfont的使用详解
  16. https的网站用了百度分享后网站在浏览器中不安全解决方法
  17. 用Squid实现反向代理
  18. 感谢——Thunder团队
  19. Ubuntu 安装 networkx
  20. HDU1398 Square Coins(生成函数)

热门文章

  1. TagCanvas - HTML5 Canvas Tag Cloud
  2. 数据存储 --《高性能JavaScript》
  3. Ajax_HTTP请求以及响应
  4. 【网站支付PHP篇】thinkPHP集成汇潮支付(ecpss)
  5. com.mongodb. org.mongodb.
  6. vscode部分文件夹无法打开
  7. XMU C语言程序设计实践(3)
  8. activity四种状态
  9. sql语句,无法绑定由多个部分组成的标识符 "xxx"
  10. date 命令 时间戳到标准格式转换