初学OpenCV,对自己的小项目进行记录
1、加载图片
将预先准备好的图片加载进来
import cv2 as cv
img = cv.imread("E:\\lifefiles\\photos\\XIN06160.JPG")
因为图片过大无法完全展示,使用shape看一下图片大小
img.shape
(5168, 3448, 3)
2、对图片的大小进行修改
img = cv.resize(img,dsize=(344,500))
cv.imshow("image",img)
cv.waitKey(0)
cv.destroyAllWindows() #关闭所有窗口
3、对图片进行灰度转换
#灰度转换
gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
转换后的图像:
4、人脸检测
编写一个人脸检测的函数
def face_detect():
gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
face_detect = cv.CascadeClassifier("E:\\lifefiles\\softwares\\anaconda\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_alt2.xml")
face = face_detect.detectMultiScale(gray_img,1.01,5,0,(30,30),(50,50))
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2) #画红色矩形框出来
cv.imshow('result',img)
5、运行
face_detect()
while True:
if ord('q') == cv.waitKey(0): #按q键退出
break
cv.destroyAllWindows()
可以看到,最后两张人脸都被识别出来了,但其实检测的结果会有错误,有不是人脸的地方也会被检测出来并画框,需要不断调整参数才能正确识别
这是一个人脸识别的基础小项目,获取图片之后对图片进行变形、灰度转换,再使用opencv本身的检测函数就可以实现了