• 【无标题】


    
    png_path ='...../small_img/0002.jpg' 
    folder_path = '/..../data/test_in/' 
    
    • 1
    • 2
    • 3

    输入一张我们看着长宽高分别是 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: 
    
    print(img_cv.size)
    # 510963   # 是181*941*3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 显示图片
    cv2.imshow('Image', img_cv)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    #  请注意,在使用imshow()函数时,图片会在一个窗口中显示。waitKey(0)用于等待用户按下任## 意键后关闭图像窗口,而destroyAllWindows()用于关闭所有打开的窗口。
    
    #  注意:在某些操作系统或环境下,可能会出现显示窗口无法正常工作或闪退的问题。这通常涉及## 图形库的设置或可能需要调整一些参数来适应特定的显示方式。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    # 保存图像
    cv2.imwrite('/path/output_image.jpg', img_cv)
    
    • 1
    • 2

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

    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 : 
    
    print(img_io.size)  # 681284 ===181*941*4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    利用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 : 
    print(img_plt.size)  # 681284 ===181*941*4
    
    plt.imshow(img_plt , cmap=plt.cm.binary)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    显示的图片是:

    在这里插入图片描述

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

    利用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 : 
    print(img_mpig.size)  # 681284 ===181*941*4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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: 
    
    #将图片转换成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: 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

  • 相关阅读:
    JVM学习(宋红康)之类加载器子系统
    文心大模型4.0正式发布!来看看这届百度世界有啥亮点
    工厂设计模式
    11.25总结
    页面的渲染流程
    python字典、列表排序,从简单到复杂
    querySelectorAll()和querySelector()
    DDR PCB设计布线时,拓扑结构的选择
    USB学习(1):USB基础之接口类型、协议标准、引脚分布、架构、时序和数据格式
    第4讲:vue内置命令(文本插值,属性绑定,v-text,v-html)
  • 原文地址:https://blog.csdn.net/qq_43761012/article/details/134195968