【无标题】


png_path ='...../small_img/0002.jpg' 
folder_path = '/..../data/test_in/' 

输入一张我们看着长宽高分别是 941长, 181宽的图片 通道数是3(H,W, C) = (941, 181, 3)

图片读入方法

OpenCV读取的图片,直接就是numpy.ndarray格式,无需转换

import cv2
img_cv = cv2.imread(imag_path)
print("img_cv.shape:", img_cv.shape)
# print("img_cv.type:", img_cv.type()) 错误 img_cv.type也错误 numpy.ndarray' object has no attribute 'type'
print("img_cv.type:", type(img_cv))
# img_cv.shape: (181, 941, 3)----->(W, H, C)
# img_cv.type: <class 'numpy.ndarray'>

print(img_cv.size)
# 510963   # 是181*941*3
# 显示图片
cv2.imshow('Image', img_cv)
cv2.waitKey(0)
cv2.destroyAllWindows()

#  请注意,在使用imshow()函数时,图片会在一个窗口中显示。waitKey(0)用于等待用户按下任## 意键后关闭图像窗口,而destroyAllWindows()用于关闭所有打开的窗口。

#  注意:在某些操作系统或环境下,可能会出现显示窗口无法正常工作或闪退的问题。这通常涉及## 图形库的设置或可能需要调整一些参数来适应特定的显示方式。
# 保存图像
cv2.imwrite('/path/output_image.jpg', img_cv)

下面读入之后变成了四通道

scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,读取的数据正好是numpy.ndarray格式

import skimage.io as io
img_io = io.imread(png_path)
print("img_io :",img_io .shape) # 
print("img_io :",type(img_io))  # 
# img_io : (181, 941, 4)
# img_io : <class 'numpy.ndarray'>

print(img_io.size)  # 681284 ===181*941*4

利用matplotlib.pyplot读取的图片,同样也是直接就生成了数组格式

import matplotlib.pyplot as plt
img_plt = plt.imread(dirpath)
print("img_plt :",img_plt .shape)
print("img_plt :",type(img_plt ))
# img_mpig : (181, 941, 4)
# img_mpig : <class 'numpy.ndarray'>
print(img_plt.size)  # 681284 ===181*941*4

plt.imshow(img_plt , cmap=plt.cm.binary)
plt.show()

显示的图片是:

在这里插入图片描述

img_plt = plt.imread(png_path)[:,:,:3]  # 仅保留前三个通道(R、G、B),丢弃 Alpha 通道
print("img_plt:", img_plt.shape)

利用matplotlib.image读取的图片,直接就生成了数组格式

import matplotlib.image as mpig
img_mpig = mpig.imread(dirpath)#读取数据
print("img_mpig :",img_mpig .shape)
print("img_mpig :",type(img_mpig ))
# img_mpig : (181, 941, 4)
# img_mpig : <class 'numpy.ndarray'>
print(img_mpig.size)  # 681284 ===181*941*4

PIL读取的图片并不是直接的numpy.ndarray格式,需要进行转换

from PIL import Image
import numpy as np
img_PIL = Image.open(png_path)
print("img_PIL:",type(img_PIL)) # img_PIL: <class 'PIL.PngImagePlugin.PngImageFile'>

#将图片转换成np.ndarray格式
img_PIL = np.array(img_PIL)
print("img_PIL:",img_PIL.shape)  # img_PIL: (181, 941, 4)
print("img_PIL:",img_PIL.size) # img_PIL: (941, 181)==(H,W)

print("img_PIL:",type(img_PIL))
# img_PIL: <class 'numpy.ndarray'>

常见的cv2,matplotlib.pyplot, scikit-image读入之后都是一个narray数组的形式,np.shape = (W, H, C)
PIL读入之后不是narray,PIL.shape = (H, W, C)
cv2读入通道数不变,其余的会变

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值