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()方法。
-
-
注意不要直接修改,直接修改虽然会显示修改成功,但是会把数据修改为错误格式
强制转换会造成由原来的2×2的矩阵被变为2×4
-
-