小强学Python+OpenCV之-1.0开篇

写在前面:

有没有想过使用Python + OpenCV来实现人脸识别?
想想就有点小兴奋吧。
小强也是不久前才了解到可以使用Python + OpenCV进行图像处理。觉得有趣就想学习一下。
在这里,把我学到的小知识记录一下,也为了自己以后方便查看。
也希望有相同兴趣的同学搭个伴,一起学习。更希望得到大牛们的指点和鼓励。

完成此课后,我设置的终极目标有下面几个:

  1.  实现停车场的车牌识别系统,并到天桥上去做实验
    
  2.  手势识别?
    
  3.  道路标线识别?自动驾驶?
    
  4.  标志图形识别?跟踪?四轴飞行器?
    
  5.  ……发挥想像,一切和图像识别有关的东东
    
  6.  Deep learning?
    

——————————————————华丽的分割线———————————————————

下面进入正题。

编辑一个python脚本,取名为face_detect.py
键入以下内容并保存。

# 导入opencv库
import cv2
 
# 加载图像
image = cv2.imread("messi.jpg")
 
# 显示我们的原始图像到屏幕上
cv2.imshow("Faces", image)
 
# 等待键盘输出
cv2.waitKey(0)
 
# 将图像转成灰度图像
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
 
# 加载人脸分类检测器(这个分类检测器可以在opencv的安装路径xxx/OpenCV/haarcascade下找到)
detector =cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
 
# 识别人脸,得到人脸所在的矩形区域(可能会得到多个人脸,所以这里是一个list)
rects = detector.detectMultiScale(gray,scaleFactor=1.05, minNeighbors=7,
         minSize=(30,30), flags=cv2.cv.CV_HAAR_SCALE_IMAGE)
 
# 遍历list中每个识别到的人脸区域,并在原始图像上沿该区域的边界画一个颜色为绿色、线宽为2个像素的边框
for (x, y, w, h) in rects:
         cv2.rectangle(image,(x, y), (x + w, y + h), (0, 255, 0), 2)
 
# 将图像显示在屏幕上,
cv2.imshow("Faces", image)
 
# 等待键盘输出
cv2.waitKey(0)

保存之后,在终端中执行python detect_faces.py
首先显示的是我们的原始图像。

小强学Python+OpenCV之-1.0开篇_第1张图片
messi1.png

此时,按上键盘上的任意按键。

奇迹发生了。人脸识别出来了。

小强学Python+OpenCV之-1.0开篇_第2张图片
messi2.png

是不是觉得很有趣?

话说回来。我们的路还长。这里只是给大家一个印象-好玩儿。毕竟兴趣才是最好的老师。

下面我会按部就班,完成以下内容(会慢慢补充):

1.1. 图像的加载,显示和保存
1.2. 图像知识基础
1.3. 绘图
1.4. 基本图像处理
1.4.1 平移、旋转、缩放、翻转-之理论
1.4.2 裁剪
1.4.3 算术运算
1.4.4 掩膜(mask)及位运算
1.4.5 通道分离及合并
1.5. 内核(kernel)
1.6. 形态学图像处理(morphological operations)
1.7. 平滑模糊(smoothing and blurring)
1.8. 照明和颜色空间
1.9. 阈值
1.10. 梯度和边缘检测
a) 渐变
b) 边缘检测
1.11. 轮廓
a) 查找和绘制轮廓
b) 简单轮廓特性
c) 高级轮廓特性
d) 轮廓逼近
e) 轮廓排序
1.2. 柱状图
1.3. 连通区域标记

2.1. 什么是物体探测
a) 物体探测介绍
b) 模板匹配
2.2 物体探测
a) 安装dlib
b) 物体探测
2.3 ……

你可能感兴趣的:(小强学Python+OpenCV之-1.0开篇)