OpenCV提供了众多对图片操作的函数,其中最基本的就是图片的读取与输出了。

一、读取图片

  利用OpenCV读取一张图片是非常容易的,只需要用到 imread() 函数,打开shell或者cmd,进入python,输入help(cv2.imread)获取该函数的文档,得到:

imread(...)
    imread(filename[, flags]) -> retval

  可见, imread需要提供两个参数,第一个是图片的路径,第二个是图片读取的模式(flags),函数返回一个存储着图片像素数据的矩阵。

  flags有三个值:

  • cv2.IMREAD_COLOR             加载彩色图片,透明度将被舍弃
  • cv2.IMREAD_GRAYSCALE      灰度模式
  • cv2.IMREAD_UNCHANGED     完整的加载一张图片,包括alpha通道值(用来表示透明度)

  这三个flags还可以分别用1,0,-1代替  

img = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
img = cv2.imread("test.jpg", 0)
# 这两者是等价的

  现在,我们已经获得了图像test.jpg的数据,存储在img中。img实际上是一个numpy的array数组,它包含着每个像素点的数据(如果是彩色模式,则包括了bgr值,灰度模式则是灰度值)。我们可以通过下标访问每一个像素点的数据,对每一个像素点进行更改操作。

二、在窗口中展示图片

  在加载图片之后,我们可以利用 imshow() 函数把加载的图片展示出来,同样的,我们利用help(cv2.imshow)来查看该函数的用法:

imshow(...)
imshow(winname, mat) -> None

  imshow需要两个参数,第一个是窗口的名字(winname),第二个是图片的像素矩阵(mat),函数没有返回值。imshow()会创建一个窗口,并在该窗口中把图片展示出来,我们不用操心图片是彩色的还是灰色,OpenCV会自动推导出图片数据的模式。那我们现在把之前存储在img里的图片展示出来:

cv2.imshow("test", img)
cv2.waitKey(0) # 等待用户按下按键
cv2.destroyAllWindows() # 关闭所有窗口

    展示效果:                            原图:

                        

我们可以看到,原来透明的像素点都变成黑色了,这是因为灰度模式下透明度信息被舍弃,原来透明的像素点的值变为0,也就变成了黑色(255是白色)

三、保存图片

  我们获得了一张灰色的图片,如果想要把它保存下来,应该怎么做呢?这时候就需要利用 imwrite() 函数,python环境下输入help(cv2.imwrite),得到:

imwrite(...)
    imwrite(filename, img[, params]) -> retval

  filename为输出图片的名字,img为要输出的图片,params为图片格式的参数,如果图片写入成功则返回True,否则返回False。

  我们把这张灰度图像保存为gray.jpg:

cv2.imwrite("gray.jpg", img)

Python下的OpenCV学习 02 —— 图像的读取与保存的更多相关文章

  1. Python下的OpenCV学习 01 —— 在Linux下安装OpenCV

    一.OpenCV简要介绍 OpenCV是一个跨平台的计算机视觉库,可以运行在Windows.Linux.MacOS等操作系统上.OpenCV提供了众多语言的接口,其中就包含了Python,Python ...

  2. 【python下使用OpenCV实现计算机视觉读书笔记4】保存摄像头视频

    读取摄像头内容,然后保存一段十秒钟的视频. import cv2 cameraCapture = cv2.VideoCapture(0) fps = 30 # an assumption size = ...

  3. Python学习---Python下[元组]的学习

    元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...

  4. 【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换

    import cv2 import numpy import os # Make an array of 120,000 random bytes. randomByteArray = bytearr ...

  5. opencv学习(六)——图像基本操作

    图像基本操作 一.访问和修改像素值 先来理解一下,图像与一般的矩阵或张量有何不同(不考虑图像的格式,元数据等信息).首先,一张图像有自己的属性,宽,高,通道数.其中宽和高是我们肉眼可见的属性,而通道数 ...

  6. python下用OpenCV的圆形检测

    写在文章前 这些天因为工作需要要学习图像检测,笨笨的我啥都不会要盯着OpenCV重头开始学(:′⌒`),甚至查资料能力都很弱弱〒▽〒 夸一下我最好的男票(*^▽^*)  男盆友也不是做图像处理的 但是 ...

  7. opencv学习笔记——图像缩放函数resize

    opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...

  8. opencv学习(一)——图像入门

    图像入门 一.读取图像 在opencv中使用cv.imread(filename, flags)函数读取图像.filename参数表示读取图像的路径.读取图像的路径应完整给出,且不能含有中文,否则在调 ...

  9. opencv学习笔记-图像对比度、亮度调节

    在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...

随机推荐

  1. 快速查询List中指定的数据

    时间:2017/5/15 作者:李国君 题目:快速查询List中指定的数据 背景:当List中保存了大量的数据时,用传统的方法去遍历指定的数据肯定会效率低下,有一个方法就是类似于数据库查询那样,根据索 ...

  2. jQuery教程详解(一)

    PS--了解JQuery Query是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨 ...

  3. Java Jpa 规范

    Jpa最早是EJB3.0里面的内容,JSR 220: Enterprise JavaBeansTM 3.0 https://www.jcp.org/en/jsr/detail?id=220 后来大约在 ...

  4. js中的数组排序

    js数组冒泡排序,快速排序的原理以及实现   冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位 ...

  5. OCP 11G 实验环境安装文档 ( RedHat5.5 + Oracle11g )

    RedHat5.5 linux下Oracle11g软件安装 一.配置虚拟机 为了创建和配置虚拟机,你需要添加硬件设备如磁盘和cpu,在你开始安装之前,创建一个windows目录作为存放虚拟机的目录 目 ...

  6. 理解Linux文件系统之inode

    很少转发别人的文章,但是这篇写的太好了. 理解inode   作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...

  7. C3制作导航栏分割线及立体风格

    //首先写一个导航栏样式 .nav{    width:560px;    height: 50px;    font:bold 0/50px Arial;    text-align:center; ...

  8. java 笔记 Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别

    查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行.首先是执行Tomcat org.apache.catalina.startup ...

  9. (转)生产者/消费者问题的多种Java实现方式 (待整理)

    实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的.在博文<一种面向作业流(工作流)的轻量级可复用 ...

  10. perl的安装和版本切换工具-perlbrew

    setenv PERL /opt/perl5 --设置新perl的起始安装路径 curl -kL http://install.perlbrew.pl | bash source /opt/perl5 ...