人脸识别和车牌识别
OpenCV介绍:
OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows、 Android 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时 提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 目前主要用 C++语言开发,它的主要接口也是 C++语言封装,但是依然保留了大量的 C 语言接口。该库也有大量的 Python、Java and MATLAB/OCTAVE(版本 2.5)的接口。这些语言的 API 接口函数可以通过在线文档获得。如今也提供对于 C#、Ch、Ruby,GO 的支持。
在官网:https://opencv.org中下载图片数据分析库。
上图中的库是图片数据分析库。调用不同的数据分析可以分析不同的图片数据。
这里运用到了cv2库中的imread()进行图片读取,CascadeClassifier()将图片进行灰度处理,cvtColor()人脸检测,detectMultiScale()标记人脸,rectangle()绘制人脸识别矩阵,resize()将改变图片窗口大小,imshow()显示图片窗口,waitKey()窗口暂停,destroyAllWindows()销毁窗口。
人脸识别
import cv2 # opencv库
# 读取图片
image = cv2.imread('picture.jpg')
# 加载人脸模型库
face_model = cv2.CascadeClassifier('E://baidu//opencv//sources//data//haarcascades//haarcascade_frontalface_default.xml')
# 图片进行灰度处理
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# 人脸检测
faces = face_model.detectMultiScale(gray)
# 标记人脸
for (x, y, w, h) in faces:
# 1.原始图片;2坐标点;3.矩形宽高 4.颜色值(RGB);5.线框
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示图片窗口
image2=cv2.resize(image,dsize=(500,500))
cv2.imshow('faces', image2)
# 窗口暂停
cv2.waitKey(0)
# 销毁窗口
cv2.destroyAllWindows()
车牌识别
import cv2 # opencv库
# 读取图片
image = cv2.imread('chepai.jpg')
# 加载模型库
face_model = cv2.CascadeClassifier('E://baidu//opencv//sources//data//haarcascades//haarcascade_russian_plate_number.xml')
# 图片进行灰度处理
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# 车牌检测
faces = face_model.detectMultiScale(gray)
# 标记车牌
for (x, y, w, h) in faces:
# 1.原始图片;2坐标点;3.矩形宽高 4.颜色值(RGB);5.线框
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
# 显示图片窗口
image2=cv2.resize(image,dsize=(500,500))
cv2.imshow('faces', image2)
# 窗口暂停
cv2.waitKey(0)
# 销毁窗口
cv2.destroyAllWindows()
这两个不同之处大家想必都知道了,不能说好不相关吧,简直是一摸一样。主要就是openvc的数据处理的数据选择不同。人脸的是:haarcascade_frontalface_default.xml
车牌的是:haarcascade_russian_plate_number.xml