Python对图像的读取及处理

一 读取:
(1) skimage.io.imread的存储格式是RGB
(2) cv2.imread的存储格式是BGR
imread(“image_path",1)在Mat数据存储如下图
在这里插入图片描述
OpenCV中imread函数的第二个参数有如下6中情况:
enum
{
/* 8bit, color or not /
CV_LOAD_IMAGE_UNCHANGED =-1,//以图像原始属性读入
/
8bit, gray /
CV_LOAD_IMAGE_GRAYSCALE =0,//以灰度图像读入
/
?, color /
CV_LOAD_IMAGE_COLOR =1,//以彩色图像读入
/
any depth, ? /
CV_LOAD_IMAGE_ANYDEPTH =2,//后三种情况未了解,等后续补充
/
?, any color /
CV_LOAD_IMAGE_ANYCOLOR =4,
/
?, no rotate */
CV_LOAD_IMAGE_IGNORE_ORIENTATION =128
};

import cv2 as cv

(3) matplotlib: 读取的是 RGB 图

import matplotlib.pyplot as plt #plt 用于显示图片
import matplotlib.image as mpimg   #mpimg 用于读取图片

lena= mpimg.imread('lena.png')

(4) PIL

from PIL import Image
im = Image.open('lena.png')
im.show()

PIL读取图片为Image对象,将 PIL Image 图片转换为 numpy 数组要用以下函数:

import numpy as np
im_array = np.array(im)

二、图像数据类型以及转换:

一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换。这些数据类型及取值范围如下表所示:
在这里插入图片描述
一张图片的像素范围是[0, 255],所以类型是unit8,可以通过以下代码查看图像的数据类型:

  from skimage import io, data
  img = data.chelsea()
  print(img.dtype.name)

2, 转换
推荐使用skimage,实测很好用,不管图像深度是多少维。
在这里插入图片描述
三,矩阵
关于矩阵,本来不该放在图像中,但是考虑到图像就是矩阵(Everything is matrix),很多对图像的操作实际就是对矩阵的操作,因此一并记录:
主要是考虑矩阵的切片和索引:(亲自实践理解会更深刻,但总是会忘)
多维矩阵的话,最外边的大括号里的元素数量就是shape的第一个值。

参考链接:
https://www.jianshu.com/p/3bf8da79f3ab
https://blog.csdn.net/u011028345/article/details/74847601

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值