opencv-图像基本操作(读取图像像素,通道分离合并,数据类型转换)

图像的基础操作

1.读取图像的像素值并修改

  • 首先我们先读取一张图片

    import cv2
    import numpy as np
    img=cv2.imread(‘路径’, 1)

  • 如果读取的是彩色图,那么img是一个三维数组,最后一位表示颜色通道,opencv采用BGR顺序

    • 读取某一个像素值

    px = img[21,30,1]

    • 读取某一位置的三个通道值

    px = img[21,30]

    • 修改像素值

    img[21, 30, 1] = [0, 0, 0]
    注意:Numpy 是经过优化了的进行快速矩阵运算的软件包。所以不推荐逐个获取像素值并修改,这样会很慢,能有矩阵运算就不要用循环。

  • 获取图像属性

  • 图像基本属性包括:行、列、通道、图像数据类型、像素数目等

  • img.shape:获得图像形状(行、列、通道)

  • img.size:获得图像像素总个数

  • img.dtype:获得图像数据类型(下表)

    名称 描述
    bool 一个字节 布尔类型
    inti 由所在平台觉定的整数类型(int32,int64)
    int8 一个字节的整数(-128——127)
    int16 整数(-32768——32767)
    int32 整数( -2 ** 31 至 2 ** 32 )
    int64 整数,-2 ** 63 至 2 ** 63
    uint8 无符号整数,0 至 255
    uint16 无符号整数,0 至 65535
    uint32 无符号整数,0 至 2 ** 32
    uint64 无符号整数,0 至 2 ** 64
    float16 半精度浮点数:16位,正负号1位,指数5位,精度10位
    float32 单精度浮点数:32位,正负号1位,指数8位,精度23位
    float64或float 双精度浮点数:64位,正负号1位,指数11位,精度52位
    complex64 复数,分别用两个32位浮点数表示实部和虚部
    complex 复数,分别用两个64位浮点数表示实部和虚部
    • 数据类型转换

      • numpy数组的数据类型不能直接转换,需要用astype()方法。

      • opencv-图像基本操作(读取图像像素,通道分离合并,数据类型转换)

      • 注意不要直接修改,直接修改虽然会显示修改成功,但是会把数据修改为错误格式

        强制转换会造成由原来的2×2的矩阵被变为2×4

        opencv-图像基本操作(读取图像像素,通道分离合并,数据类型转换)