zoukankan      html  css  js  c++  java
  • [Python图像处理]三.获取图像属性及通道处理

    获取图像属性

    1: 形状-shape:    通过shape关键字获取图像的形状,返回包含行数、列数、通道数的元祖。其中灰度图像返回行数和列数,彩色图像返回行数、列数和通道数

    import cv2
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    # 返回行数,列数,通道数
    print(img.shape)   # (515, 425, 3)

    2:像素数目-size: 通过size关键字获取图像的像素数目,其中灰度图像返回行数 * 列数,彩色图像返回行数 * 列数 * 通道数

    import cv2
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    print(img.size)  # 656625

    3:图像类型-dtype: 通过dtype关键字获取图像的数据类型,通常返回uint8

    import cv2
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    # 获取图像类型, 通常返回uint8
    print(img.dtype)    # uint8

    图像通道处理

    1: 通道拆分: OpenCV读取的彩色图像由B、G、R三原色组成,可以通过下面代码获取不同的通道.(b=img[位置参数, 0]  g=img[位置参数, 1] r=img[位置参数, 2])

    借助split()函数拆分通道

    import cv2
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    # 拆分通道
    b, g, r = cv2.split(img)
    cv2.imshow("B", b)
    cv2.imshow("G", g)
    cv2.imshow("R", r)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    2:通道合并: 图像通道合并主要调用merge()函数实现(m = cv2.merge([r, g, b]))

    import cv2
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    b, g, r = cv2.split(img)
    m = cv2.merge([r, g, b])
    cv2.imshow("Demo", m)

    可以修改通道之后再合并

    import cv2
    import numpy as np
    img = cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
    rows, cols, chn = img.shape
    b1 = cv2.split(img)[0]
    # G, R通道设置为0,
    g1 = np.zeros((rows, cols), dtype=img.dtype)
    r1 = np.zeros((rows, cols), dtype=img.dtype)
    m1 = cv2.merge([b1, g1, r1])
    cv2.imshow("Demo1", m1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    效果如下:

    转自:https://blog.csdn.net/Eastmount/category_7912787.html

  • 相关阅读:
    一个完整的SQL SERVER数据库全文索引的示例
    sqlhelper for access
    解决打开网站弹出下载文件
    18句话入门SQLServer XML
    c# winform 自动关闭messagebox 模拟回车
    jquery json
    用超级巡警批量清除被挂马的网页
    sqlhelper for sql
    SQL XML DML 数据修改
    post方法易错地方
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/12860084.html
Copyright © 2011-2022 走看看