• 【无标题】


    
    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读入通道数不变,其余的会变

  • 相关阅读:
    世界上到底有多少种编程语言
    力扣第216 组合总和 ||| c++ 回溯 + 注释
    java计算机毕业设计ssm课程建设制作服务平台系统
    学习笔记 --- RabbitMQ
    Python打造一个词云制作软件
    《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析
    如何使用javascript制作一个网页端3D贪吃蛇游戏(附源码及链接)
    第二证券今日投资参考:苹果WWDC大会开幕 地产板块再迎催化
    Dialog and WindowManager$BadTokenException
    使用sigprocmask函数阻塞SIGQUIT信号
  • 原文地址:https://blog.csdn.net/qq_43761012/article/details/134195968