1、读/写图像文件

    OpenCV的imread()函数imwrite()函数能支持各种静态图像文件格式。不同系统支持的文件格式不一样,但都支持BMP格式,通常还应该支持PNG、JPEG和TIFF格式。

    无论哪种格式,每个像素都会有一个值,但不同格式表示像素的方式有所不同。如:

import cv2
import numpy as np
import os img = np.zeros((300, 300), dtype = np.uint8) # 通过二维NumPy数组来简单创建一个黑色的正方形图像
print(img) # 在控制台打印该图像
print(img.shape) # 通过shape属性来查看图像的结构,返回行和列,如果有一个以上的通道,还会返回通道数
img = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) # 利用cv2.cvtColor函数将该图像转换成BGR格式
print(img)
print(img.shape)
cv2.namedWindow("Image") # 显示该图像
cv2.imshow("Image", img)
cv2.waitKey ()

     结果为:

[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
# 每个像素都由一个8位整数来表示,即每个像素值的范围是0~255
(300, 300)
[[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]] [[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]] [[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]] ... [[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]] [[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]] [[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]]
# 现在每个像素都由一个三元数组表示,并且每个整型向量分别表示一个B,G和R通道。其他色彩空间(如HSV)也以同样的方式来表示像素,只是取值范围和通道数目不同(例如,HSV色彩空间的色度值范围为0~180)
(300, 300, 3)

    

  2、可读取一种格式的图像文件,然后将其保存为另一种格式。如:

image = cv2.imread('flower.png')  # 将‘flower.jpg’的图片与.py文件放在同一目录下,或者使用绝对路径
cv2.imwrite('flower.jpg',image)

    

    

    在默认情况下,即使图像文件为灰度格式,imread()函数也会返回BGR格式的图像,BGR与RGB表示的色彩空间相同,但字节顺序相反。

    下面列出的选项可作为imread()函数的参数:

    IMREAD_ANYCOLOR = 4

    IMREAD_ANYDEPTH = 2

    IMREAD_COLOR = 1

    IMREAD_GARYSCALE = 0

    IMREAD_LOAD_GDAL = 8

    IMREAD_UNCHANGED = -1

    cv2.imread(‘图像名称’,’可选参数’) 
      可选参数决定读入图像的模式: 
      0:读入的为灰度图像(即使图像为彩色的) 
      1:读入的图像为彩色的(默认);

    如下面的例子将加载的PNG文件作为灰度图像(在这个过程中会丢失所有的颜色信息),然后又将其保存为灰度的PNG图像。

garyImage = cv2.imread('flower.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imwrite('flower.png',garyImage)

    

    

    无论采用哪种模式,imread()函数会删除所有alpha通道的信息(透明度)。imwrite()函数要求图像为BGR或灰度格式,并且每个通道要有一定的位(bit),

    输出格式要支持这些通道。例如,bmp格式要求每个通道有8位,而PNG允许每个通道有8位或16位

    储存图像函数:cv2.imwrite(‘保存的图像名’,图像,‘参数’) 
    正常的图像储存使用就是cv2.imwrite(‘保存的图像名’,图像),后面一个参数默认,保存的图像名还得带类型,比如jpg,bmp等等,OpenCV目前支持读取bmp、jpg、png、tiff等常用格式,

    第三个参数较复杂,还得分是jpg、bmp等等图像的类型不同而不同,其实就是决定了图像储存大小,清晰度的,默认的就很好

    此外,还有一种显示图像的方式。

  

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('flower.jpg',0);#打开为灰度图像
plt.imshow(img, 'gray') #必须规定为显示的为什么图像
# plt.xticks([]),plt.yticks([]) #隐藏坐标线
plt.show() #显示出来,不要也可以,但是一般都要了

    

OpenCV3 for python3 学习笔记1的更多相关文章

  1. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像2

    3.5.Canny边缘检测 OpenCV提供了Canny边缘检测函数来识别边缘.它有5个步骤:使用高斯滤波器对图像进行去噪.计算梯度.在边缘上使用最大抑制(NMS).在检测到的边缘上使用双阀值去除 假 ...

  2. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像一

    本文的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 1.不同色彩空间的的转换 OpenCV有数百种关于在不同 ...

  3. OpenCV3 for python3 学习笔记2

    1.安装 如果你是第一次使用OpenCV Python开发包,想要安装OpenCV Python只要执行如下命令行即可:  pip install opencv-python   如果你还想使用Ope ...

  4. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  5. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  6. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  7. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  8. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  9. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

随机推荐

  1. .bat批处理添加Python任务

    一.常用命令含义 例一.多进程python 任务  --  start 命令 @echo offstart python C:\Users\ntitled\n\update_restt\test_ba ...

  2. window下配置SSH连接GitHub、GitHub配置ssh key

    window下配置SSH连接GitHub.GitHub配置ssh key   此经验分两部分: 第一部分介绍:在windows下通过msysGit(Git for windows.Git Bash)配 ...

  3. POJ 2112 Optimal Milking (二分+最短路+最大流)

    <题目链接> 题目大意: 有K台挤奶机和C头奶牛,都被视为物体,这K+C个物体之间存在路径.给出一个 (K+C)x(K+C) 的矩阵A,A[i][j]表示物体i和物体j之间的距离,有些物体 ...

  4. hdu 3183 A Magic Lamp 【RMQ】

    <题目链接> <转载于 >>>  > 题目大意: 给出一个长度不超过1000位的数,求删去m位数字以后形成的最小的数字是多少. 解题分析: 分析:我们可以把题 ...

  5. 练习八 spool导出

    sqlplus -s username/password@sid set trimspool on; set linesize 120; set pagesize 2000; set newpage ...

  6. XamarinSQLite教程添加列

    XamarinSQLite教程添加列 如果开发者想要在现有的表中添加列,并不需要删除重新创建数据表,只需要修改数据表.操作步骤如下. (1)右击需要添加列的表,单击Add column…(beta)命 ...

  7. Numpy np.array 相关常用操作学习笔记

    1.np.array构造函数 用法:np.array([1,2,3,4,5]) 1.1 numpy array 和 python list 有什么区别? 标准Python的列表(list)中,元素本质 ...

  8. 大数据环境完全分布式搭建 hadoop2.4.1

    (如果想要安装视频及相关软件可以博私聊我 qq 731487514) hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等.最新的hadoop-2.4.1又增加了YA ...

  9. Java并发编程(十四)-- 线程池实现原理

    在上一章我们从宏观上介绍了ThreadPoolExecutor,本文将深入解析一下线程池的具体实现原理 原理解析 线程池状态 在ThreadPoolExecutor中定义了一个volatile变量,另 ...

  10. Docker安装管理界面portainer

    在Ubuntu或者Debian已经部署完毕Docker 拉取镜像文件: sudo docker pull docker.io/portainer/portainer Using default tag ...