本章主要讲解 图像的读取方式、灰度化操作、图像转化为矩阵的方法

假设 strImgPath是图像的路径, img对象将图片读入到内存中



读取图像的第一种方式:skImage

  1. from skimage import io
  2. img=io.imread(strImgPath) # 读出的3D

读取图像的第二种方式:matplotlib

  1. import matplotlib.image as mpimg #mpimg 用于读取图片
  2. import matplotlib.pyplot as plt # plt 用于显示图片
  3. img = mpimg.imread(strImgPath) # 读取图像
  4. plt.imshow(lena) # 显示图片
  5. plt.axis('off') # 不显示坐标轴
  6. plt.show()
  1. # 2、显示图片的第一个通道
  2. lena_1 = lena[:,:,0]
  3. plt.imshow('lena_1')
  4. plt.show()
  1. # 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法:
  2. #方法一
  3. plt.imshow('lena_1', cmap='Greys_r')
  4. plt.show()
  1. #方法二
  2. img = plt.imshow('lena_1')
  3. img.set_cmap('gray') # 'hot' 是热量图
  4. plt.show()
  1. #3、将 RGB 转为灰度图
  2. def rgb2gray(rgb):
  3. return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
  4.  
  5. gray = rgb2gray(lena)
  6. # 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
  7. plt.imshow(gray, cmap='Greys_r')
  8. plt.axis('off')
  9. plt.show()

第三种方式: PIL

PIL模块提供有对图像操作的基本方法;

Image.convert() 根据不同的参数可以把图片转化为不同的灰度图像,其中参数”L”是最常见的参数;

转化为矩阵的方式可以用numpy模块的asarrsy() 也可以用numpy的matrix()

  1. from PIL import Image
  2. img=Image.open(strImgPath)
  3. img=np.asarray(strImgPath) # 转换为矩阵
  4. im = im.convert("L") # 灰度化
  5. data = im.getdata()# 获取灰度化以后的矩阵
  6. data = np.matrix(data,dtype='float')/255.0 # 对矩阵进行二值化PS 这种方式很low, 大津法效果更好,cv2的二值化就是用大津法

第四种方式:opencv

Cv2是opencv的python版,很多函数名称和操作方式和C++实现的opencv很相像,在此不赘述。

  1. import cv2
  2. img= = cv2.imread(strImgPath) # 读取图像
  3. img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图片压缩为单通道的灰度图

Python语言下图像的操作方法总结的更多相关文章

  1. 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码

    Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...

  2. 解决python语言在cmd下中文乱码的问题

    解决python语言在cmd下中文乱码的问题: a = "再见!"print (a.decode('utf-8').encode('gbk')) #解决在cmd下中文乱码的问题

  3. selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等

    selenium的用法 selenium2.0主要包含selenium IDE 和selenium webDriver,IDE有点类似QTP和LoadRunner的录制功能,就是firefox浏览器的 ...

  4. 【学习笔记】PYTHON语言程序设计(北理工 嵩天)

    1 Python基本语法元素 1.1 程序设计基本方法 计算机发展历史上最重要的预测法则     摩尔定律:单位面积集成电路上可容纳晶体管数量约2年翻倍 cpu/gpu.内存.硬盘.电子产品价格等都遵 ...

  5. Python语言程序设计(3)--实例2-python蟒蛇绘制-turtle库

    1. 2. 3.了解turtle库 Turtle,也叫海龟渲染器,使用Turtle库画图也叫海龟作图.Turtle库是Python语言中一个很流行的绘制图像的函数库.海龟渲染器,和各种三维软件都有着良 ...

  6. selenium2自动化测试实战--基于Python语言

    自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...

  7. [Python学习笔记1]Python语言基础 数学运算符 字符串 列表

    这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...

  8. 如何系统地自学一门Python 语言(转)

    转自:http://www.phpxs.com/post/4521 零基础情况下,学一门语言充实下自己,Python,简洁.优美.容易使用,是一个很好的选择.那么如何系统地自学Python呢? 有的人 ...

  9. python语言的优点和缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是"优雅"."明确"."简单&qu ...

随机推荐

  1. python学习,day1作业:设计一个三级菜单

    设计一个三级菜单,要求能够下钻,能够推出,比较笨的方法 # coding=utf-8 # Author: RyAn Bi data = { 'beijing':{ 'changping':{ 'wud ...

  2. 基础篇:4.1)规范化:3d工程图纸出图步骤详解

    本章目的:按照工程图出图步骤,更方便出具规范的工程图. 1.工程出图步骤 这是作者个人归纳的步骤,供同行业工程师参考完善. 以solidworks为例,工程出图步骤如下:1.1)打开绘制的3d零件图, ...

  3. POJ_3264 Balanced Lineup 【线段树 + 区间查询】

    一.题面 POJ3264 二.分析 典型的线段树的题,没有更新只有查询. 查询的时候需要注意的是,在判断区间是完全属于右子树还是左子树时,要根据建树的情况来选择,不然会出错.具体看代码 三.AC代码 ...

  4. shell (2) 时间处理

    获取当前的时间,并输出 #!/bin/bash if [ $# -ne 1 ];then echo "input an dmesg time" exit 1 fi unix_tim ...

  5. rabbitmq 消息确认

    消息确认主要用在接收方 如果接收方没有确认, broker可以重发,确保消息至少消息一次..

  6. Oracle知识转储

    https://blog.csdn.net/u011479200/article/details/53086411 https://www.cnblogs.com/LiYi-Dao/p/9406189 ...

  7. pycharm 工具栏Tool中找不到Run manager.py Task

    pycharm 工具栏Tool中找不到Run manager.py Task 在做Django项目的过程中, 无法进入pycharm提供的Run manager.py Task交互环境 出现这种问题是 ...

  8. 赋值运算与深浅copy

    1.复制运算 l1 = [1,2,3,['a','b']] l2 = l1 l1[0] = 111 print(l1) # [111, 2, 3, ['a', 'b']] print(l2) # [1 ...

  9. 解决GitHub下载很慢的问题

    此方法参照 github下载慢,轻松提速教程 1.获取github的IP地址.访问:https://www.ipaddress.com/ 网址依次获取以下三个网址的IP github.com gith ...

  10. Jquery ajax, Axios, Fetch区别

    1.   Jquery ajax, Axios, Fetch区别之我见 2.   ajax.axios.fetch之间的详细区别以及优缺点