上节课我们学习了,OpenCV的基础知识和基本的读取数据方法。这节课,让我们继续来了解人脸识别的知识。
一,图片灰度转换
OpenCV 中有数百种关于在不同色彩空间之间转换的方法。当前,在计算机视觉中有三 种常用的色彩空间:灰度、BGR、以及 HSV(Hue,Saturation,Value)。
(1)灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理 特别有效,比如人脸识别。
(2)BGR 及蓝、绿、红色彩空间,每一个像素点都由一个三元数组来表示,分别代表 蓝、绿、红三种颜色。网页开发者可能熟悉另一个与之相似的颜色空间:RGB 它们只是颜 色顺序上不同。
(3)HSV,H(Hue)是色调,S(Saturation)是饱和度,V(Value)表示黑暗的程度 (或光谱另一端的明亮程度)。
灰度转换的作用就是:转换成灰度的图片的计算强度得以降低。示例如下:
【示例】将图片灰度
import cv2 as cv
src=cv.imread('lena.jpg')
cv.imshow('input image',src)
#cv2 读取图片的通道是 BGR(蓝绿红)
#PIL 读取图片的通道是 RGB
gray_img=cv.cvtColor(src,code=cv.COLOR_BGR2GRAY)
cv.imshow('gray_image',gray_img)
cv.waitKey(0)
cv.destroyAllWindows()
#保存图片
cv.imwrite('gray_lena.jpg',gray_img)
二,修改图片尺寸
【示例】修改图片尺寸
import cv2 as cv
img=cv.imread('lena.jpg')
cv.imshow('input image',img)
#修改图片的尺寸
# resize_img=cv.resize(img,dsize=(110,160))
resize_img=cv.resize(img,dsize=(400,360))
print(resize_img.shape)
cv.imshow('resize_img',resize_img)
#如果键盘输入的是 q 时候 退出
while True:
if ord('q') == cv.waitKey(0):
break
cv.destroyAllWindows()
三,画图
OpenCV 的强大之处的一个体现就是其可以对图片进行任意编辑,处理。 下面的这个 函数最后一个参数指定的就是画笔的大小。
【示例】画图
import cv2 as cv
img=cv.imread('lena.jpg')
#画矩形
x,y,w,h=50,50,80,80
cv.rectangle(img,(x,y,x+w,y+h),color=(0,255,0),thickness=2) #color=BGR
cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,0,255),thickness=2)
cv.imshow('result image',img)
cv.waitKey(0)
cv.destroyAllWindows()