CH02-初识 openCV

1. 图片在计算机中的存储形式

  • BGR 图
  • 灰度图
    • 0~黑色
    • 255~白色
  • HSV 图
通道 含义 数值
H 色度 0~179
S 饱和度 0~255
V 亮度 0~255
  • 二值图
    • 每个像素点的取值只有 0 或 255 两个值

2. 图片的读取与写出

2.1 图片的读取

cv2.imread(filename,flag = 1)

参数 说明
filename 所读取的图片的相对地址
flag 设置读取的格式: 1-按照 BGR 三通道的方式进行读取;
0-以灰度图单通道的方式进行读取
import cv2

img = cv2.imread('1.jpg')  # 等同于img = cv2.imread("1.jpg",1)
img1 = cv2.imread('1.jpg',0)

2.2 图片的保存

cv2.imwrite(filename,img)

参数 说明
filename 要保存的图片的名字
img 要保存的图片的矩阵形式
import cv2

img = cv2.imread("1.jpg")
cv2.imwrite('1.png',img)

2.3 图片展示

cv2.imshow(name,img)

参数 说明
name 展示窗口的名字
img 图片的矩阵形式
import cv2

img = cv2.imread('1.jpg')
cv2.imshow('img',img)

2.4 图片延时

cv2.waitKey(time)

time 表示等待的时间,单位为毫秒

import cv2
cv2.waitKey(0)  # 停止在当前帧,有按键指令才会进入下一帧

2.5 图片读取演示

示例 1:

import cv2
import numpy as np


img = cv2.imread('./img/CH02-1.jpg')
cv2.imshow('img',img)

while True:
    if cv2.waitKey(0) == ord('q'):
        break
    elif cv2.waitKey(0) == ord('s'):
        cv2.imwrite('./img/CH02-1.bak.png', img)
        break

cv2.destroyAllWindows()

示例 2:

img = cv2.imread('./img/CH02-1.jpg')

cv2.namedWindow('img',cv2.WINDOW_AUTOSIZE)
cv2.imshow('image',img)

if cv2.waitKey(5000) == ord('s'):
    cv2.imwrite('./img/CH02-1-bak.jpg',img)

cv2.destroyAllWindows()

2.6 图片属性

灰度图的 img.shape只会返回图片的行数和列数

img = cv2.imread('./img/CH02-1.jpg')

print(img.shape)  # 整个成员
print(img.shape[0])  # 行数
print(img.shape[1])  # 列数
print(img.shape[2])  # 通道数