第一关:图片简单操作
完整的人脸识别流程,一般有如下五个步骤:
- 图像采集:使用摄像机或摄像头采集含有人脸的图像或视频流;
- 人脸检测:检测图片中是否包含人脸;
- 预处理:对人脸图像进行灰度处理、噪声过滤等预处理;
- 特征点提取:提取人脸图片中包含的特征数据;
- 人脸识别:将新的人脸照片与人脸库进行算法匹配,输出识别结果。
1.1.采集图片
使用OpenCV采集,可以通过cv2.VideoCapture()获取摄像头并捕捉画面中的图片。函数声明为:
cv2.VideoCapture(摄像头来源)-----其中,传入的参数,指定0时为默认计算机默认摄像头,指定1可以更换来源。
1.2.获取捕获图像,函数为:
cap.read()
1.3.释放捕获对象,函数为:
cap.release()
# 引入OpenCV库
import cv2
# 调用摄像头进行拍照
cap = cv2.VideoCapture(0)
# 获取一帧图片
# 如果捕获成功,代码中ret值为真,img为捕获的图像。
ret, img = cap.read()
# 释放捕获对象
cap.release()
2.读取图片
cv2.imread(图片路径, 标记)------图片应该在当前的工作路径,或在指定的绝对路径下。
第二个参数指定图片被读取的方式:
cv2.IMREAD_COLOR : 读入彩色图像,默认模式;
cv2.IMREAD_GRAYSCALE : 以灰度模式读入图像;
cv2.IMREAD_UNCHANGED : 加载图像包含alpha通道。
也可以,使用数字简约表示以上三种标记,分别为 1, 0或-1。
import cv2
# 加载一张位于当前目录下的`images/girl.jpg`的图片
image_path = "images/girl.jpg"
# 以灰度模式读取图片
img = cv2.imread(image_path,0)
3.展示图片
import cv2
# 读取图片
image_path = "images/girl.jpg"
img = cv2.imread(image_path,1)
# 窗口展示图片
cv2.imshow('cute girl',img)
# 等待用户关闭图片窗口
cv2.waitKey(0)
# 销毁创建的所有窗口
cv2.destroyAllWindows()
4.保存图片
cv2.imwrite()将图片保存到本地。
函数声明为:
cv2.imwrite(图片路径, 图片对象)##图片应该在当前的工作路径,或在指定的绝对路径下
编程要求
请在右侧编辑器编写代码,完成如下要求:
导入openCV 库(cv2);
读取路径 step1/image/girl.jpg下的图片(图片读取模式三种任选一种都可以);
将读取到的图片保存到路径 step1/out/girl-new.jpg下。
import cv2
image_path = 'step1/image/girl.jpg'
save_image_path = 'step1/out/girl-new.jpg'
img = cv2.imread(image_path,1)
cv2.rmwrite(save_image_path,1)
/
#********** Begin **********#
# 导入OpenCV库
import cv2
#********** End **********#
# 原始图片路径
image_path = 'step1/image/girl.jpg'
# 保存图片路径
save_image_path = 'step1/out/girl-new.jpg'
img = cv2.imread(image_path,1)
#********** Begin **********#
# 读取图片并保存图片
cv2.imwrite(save_image_path,1)
#********** End **********#
第二关:色彩空间及其转换
1.1.灰度空间
在OpenCV的灰度空间中,和一般的色彩空间相同,每一个颜色都有三个量,但是只有第一个亮度有值,所以表示为(亮度,0,0)。
其中,亮度是根据如下灰度公式计算而得:
Gray = R0.299 + G0.587 + B*0.114
使用的函数为:cv2.cvtColor()。
2.2.色彩转换
它的函数声明为:
cv2.cvtColor(图片对象,转换类型)
其中,转换类型,对于BGR到Gray的转换,使cv2.COLOR_BGR2GRAY类型。
同样的,对于BGR到HSV的转换,使用cv2.COLOR_BGR2HSV类型。
# 将图片的色彩空间由BGR转换为HSV
# 执行后output_img的色彩空间变成了HSV
output_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
编程要求
请在右侧编辑器编写代码,完成如下要求:
将图片的色彩空间转换为灰度空间;
将处理后的图片保存到路径step2/out/girl-gray.jpg下。
import cv2
filename = "step2/image/girl.jpg"
img = cv2.imread(filename)
output_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
save_image_path = "step2/out/girl-gray.jdg"
cv2.imwrite(save_image_path,output_img)
/
import cv2
# 加载图片
filename = "step2/image/girl.jpg"
img = cv2.imread(filename)
#********** Begin **********#
# 将图片的色彩空间由BGR转换GRAY
output_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#********** End **********#
save_image_path = "step2/out/girl-gray.jpg"
#********** Begin **********#
# 保存图片
cv2.imwrite(save_image_path,output_img)
#********** End **********#