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. mac版破解office

    下载地址:http://ereach-public.oss-cn-shanghai.aliyuncs.com/office%202016%20for%20mac.dmg 解压密码:www.ifunma ...

  2. DotNetCore跨平台~发布脚本PowerShell的设计

    回到目录 这几天对PS情有独忠,被它的强大功能所希引,它可以快速部署,快速发布,将一些连带的动作一次的完成,挺方便,类似于早期的bat文件,也像linux平台的bash脚本,但功能上,比前两者都要强很 ...

  3. 使用Vue-resource完成交互

    使用vue-resource 引入vue-resource vue-resource就像jQuery里的$.ajax,是用来跟后端交互数据的,vue-resource是vue的一个插件,所以我们在开始 ...

  4. Python 批量翻译 使用有道api;

    妹子是做翻译相关的,遇到个问题,要求得到句子中的所有单词的 音标; 有道翻译只能对单个单词翻译音标,不能对多个单词或者句子段落翻译音标; 手工一个一个翻的话那就要累死人了.....于是就让我写个翻译音 ...

  5. table初始化

    table, th , td { border: 1px solid grey; border-collapse: collapse; padding: 5px;}

  6. 玲珑杯 Round #11 (1001 1004 1007)

    比赛链接 直接贴代码.. #include<bits/stdc++.h> using namespace std; typedef long long LL; int main() { L ...

  7. RxSwift 系列(二) -- Subject

    前言 Subject是一个代理,它既是Observer,也是Observable.因为它是一个Observer,它可以订阅一个或多个Observable;因为它是一个Observable,它又可以被其 ...

  8. PHP对MySQL数据库的相关操作

    一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...

  9. spring 的单例模式

    singleton---单例模式 单例模式,在spring 中其实是scope(作用范围)参数的缺省设定值每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例 单例模式分为饿汉模 ...

  10. PHP中使用单双引号的区别

    1,双引号可以解析变量,单引号不可以解析: 2,双引号解析转义字符,单引号不解析转义,但是可以解析 \'  和  \\ ; 3,单双引号不能自己套自己,要嵌套使用,避免混乱: 4,单引号效率更高,能使 ...