python处理中的图像读取方式

 工作需求,会用的python来处理图像,把遇到的问题总结,方便学习与复盘

ps:以前没玩过这个,第一次写

1. 对于图像数据的读取
        问题概要:在前面copy大神的代码时,他用的是io.imread来读取图像数据,之前用这个读灰度图,没啥问题,换了数据后,变成彩色图。。。。。。

        下面是摘自其他大神的博客(文章最后会有原地址)

1、skimage.io.imread

io.imread读出图片格式是uint8(unsigned int);value是numpy array;图像数据是以RGB的格式进行存储的,通道值默认范围0-255。

import cv2
import matplotlib.pyplot as plt
from skimage import transform 
import numpy as np
import skimage.io as io  
 
train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'

'''以io.imread方式读取图片'''
# 读图并显示。
image = io.imread(train_dir)
plt.imshow(image)
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/TeFuirnever/article/details/89553708

        在另外查的信息中表示使用shape可以看到是个三通道的数据,但在程序中查看时,居然还是单通道(512,640)。并且感觉应该是(640,512),继续查原因。。。。。。

        好的吧,原因是在于imshow上面,直接采用imshow,并没有添加显示灰度图相关的参数 cmap='gray',ax1.imshow(im, cmap='gray'),这样就正常了,但不知道为什么之前就是正常的。。。😢

补充:imshow内容

(来自Matplotlib imshow()函数用法总结_im = ax.imshow(scores, cmap='viridis')-CSDN博客

概述:

Matplotlib中的imshow函数用于绘制热图。(热图:时数据分析常用的方法。通过色差、亮度来展示数据的差异,容易理解)

用法:

imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, hold=None, data=None, **kwargs)

参数说明:

1.cmap:cmap是colormap的简称,用于指定渐变色,默认的值为viridis。
2.aspect:aspect用于指定热图的单元格的大小,默认值为equal,此时单元格用于是一个方块,当设置为auto时,会根据画布的大小动态调整单元格的大小。
3.alpha:alpha参数用于指定透明度。
4.orign:orign参数指定绘制热图时的方向,默认值为upper此时热图的右上角为(0, 0), 当设置为lower时,热图的左下角为(0,0)。
5.vmin和vmax:用于限定数值的范围,只将vmin和vmax之间的值进行映射。
6.interpolation:参数控制热图的显示形式。
7.extent:extent参数指定热图x轴和y轴的极值。大多数的情况下,我们都不需要自己来手动指定extent参数的值。在绘制热图时,还可以结合xlim和ylim参数,来为热图的周围增加空隙。
 

2、cv2.imread

cv2.imread读出的图片格式是uint8;value是numpy array;图像数据是以BGR的格式进行存储的,注意是BGR,通道值默认范围0-255,需要将存储类型改成RGB的形式才能正常显示原图的颜色。

特别是制作tfrecord时,需要将图片通道改成RGB,具体代码如下:

import cv2
import matplotlib.pyplot as plt
from skimage import transform 
import numpy as np
import skimage.io as io  
 
train_dir = 'C:\\Users\\Administrator\\代码TRY\\1.jpg'
 
'''以cv2方式读取图片'''
image=cv2.imread(train_dir)
# 将图像通道分离开。
b,g,r = cv2.split(image)
# 以RGB的形式重新组合。
rgb_image = cv2.merge([r,g,b])
# 也可以使用这个函数直接转换成RGB形式。
# image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(rgb_image)

引用(详细内容见原博客):

skimage.io.imread与cv2.imread的区别-CSDN博客

Matplotlib imshow()函数用法总结_im = ax.imshow(scores, cmap='viridis')-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值