1.读写图片
# cv.imread(path,mode)
import cv2
lena=cv2.imread("lena.bmp")
cv2.imshow("lena", lena )
cv.imwrite(path,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 二值图像
只有两种颜色 黑和白 1白色 ,0黑色
3. 灰度图像
只有一个颜色通道,0-255,共256种颜色
4. 彩色图像
三个颜色通道 0-255,0-255,0-255,即R、G、B 三通道
5.像素处理
import cv2
import matplotlib.pyplot as plt
p = [] # 列表存放图像
lena = cv2.imread("./lena.jpeg")
p.append(cv2.cvtColor(lena, cv2.COLOR_BGR2RGB))
# 读入正常图像并进行灰度化处理
gray = cv2.cvtColor(lena, cv2.COLOR_RGB2GRAY) # 转为灰度图像
p.append(cv2.cvtColor(gray, cv2.COLOR_BGR2RGB))
# 对灰度图像进行二值化处理 设置全局阈值为127
ret, gray1 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
p.append(cv2.cvtColor(gray1, cv2.COLOR_BGR2RGB))
# plt.show():在一个窗口显示多幅图片
for i in range(3):
# subplot(行,列,索引)
plt.subplot(1, 3, i + 1)
plt.imshow(p[i])
# 没有坐标轴刻度
plt.xticks([])
plt.yticks([])
plt.show()
6.相关方法
cv2.imread(filepath,flags)
作用:读入图片
filepath:要读入图片的完整路径
flags:读入图片的标志cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
-----------------
cv2.cvtColor(src,code,dst=None,dstCn=None)
作用:转换图像的颜色空间
src: 源图像
code: 指定颜色空间转换类型
dst: 目标图像;与原图像大小深度一致
dstCn: 指定目标图像通道数;默认None,则会根据src、code自动计算;cv2.threshold(src, thresh, maxval, type
作用:对灰度图像进行二值化处理
src:源图像
thresh:阈值(在阈值中的像素点将变为0(白色部分),阈值之外的像素将变为1(黑色部分))
maxval:最大值
type:阈值类型
cv2.THRESH_BINARY(黑白二值)
cv2.THRESH_BINARY_INV(黑白二值反转)
cv2.THRESH_TRUNC (得到的图像为多像素值)
cv2.THRESH_TOZERO
cv2.THRESH_TOZERO_INV
7.通道
img = np.zeros((300, 300, 3), dtype=np.uint8)
img[:, 0:100, 0] = 255
img[:, 100:200, 1] = 255
img[:, 200:, 2] = 255
cv2.imshow('img', img)
# 通道拆分
# 1.通过索引拆分
# 2. 通过函数
img1 = cv2.imread(r"../lena.jpeg", cv2.IMREAD_COLOR) # 传入一张彩色图片
b, g, r = cv2.split(img1)
cv2.imshow("exampleB", b) # 展示B通道图
cv2.imshow("exampleG", g)
cv2.imshow("exampleR", r)