OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个开源发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
能干嘛?
- 图像处理操作(Image processing operations)
- 构建图形用户界面(Build GUI)
- 视频分析(Video analysis)
- 3D重建(3D reconstruction)
- 特征提取(Feature extraction)
- 目标检测(Object detection)
- 机器学习(Machine learning)
- 计算摄影(Computational photography)
- 形状分析(Shape analysis)
- 光流算法(Optical flow algorithms)
- 人脸和目标识别(Face and object recognition)
- 表面匹配(Surface matching)
- 文本检测和识别(Text detection and recognition)
OpenCV操作基本步骤
读取文件
import cv2
import numpy as np
img = cv2.imread("img.PNG")
展示图片
# 在之前的基础上
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindow()
OpenCV图像灰度处理
有两种方式
第一种,当你读取图片时就能够把图片进行灰度化:
img = cv2.imread("img.PNG", cv2.IMREAD_GRAYSCALE)
第二种用的最多,读取的时候不转化,加一个转化成灰色图片的步骤。
# 读取步骤
img = cv2.imread("image.jpg",cv2.COLOR_BGR2RGB)
#灰度化步骤
gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
OpenCV进行人脸识别
OpenCV 会给我们提供人脸识别的文件,里面包含了进行识别的参数。只需要两步便可以。第一步启动人脸识别的类并导入该文件,第二步讲人脸识别的方法应用到我们读取的图片上。
# 第一步
face_cascade = cv2.CascadeClassifier(r"./haarcascade_frontalface_default.xml")
# 第二步
faces = face_cascade.detectMultiScale(img,1.15,5)
OpenCV图像画边缘框
需要有包含四个元素的元祖作为循环变量去接受脸部的四个特征值。举例如下:
faces 是进行人脸识别后的每个人脸的参数矩阵。
for (x,y,w,h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0),2)
完整代码
import cv2
import numpy as np
img = cv2.imread("image.PNG", cv2.COLOR_BGR2RGB)
# print(img)
print(img.shape)
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, 1.15, 5)
# print(faces.shape)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 1)
cv2.imshow("face", img)
cv2.waitKey(0)
cv2.destroyAllWindows()