小强学Python+OpenCV之-1.0开篇

来源:互联网 发布:趣图软件下载 编辑:程序博客网 时间:2024/04/25 09:18

本博客最早发表于简书《小强学python+opencv专题》。但简书不支持LaTeX公式。所以,将博客同步更新到CSDN,以尝试一下此功能。目前感觉:
1. CSDN的LaTeX功能还有点弱,比不上作业部落,但作业部落社交性差一些。
2. CSDN博客发表还要审核,时长不定,比较郁闷。
3. 简书的图片直接拖拽上传功能比较棒,比CSDN省了好几个步骤。

小强学AI第一部《小强学python+opencv》

写在前面:

有没有想过使用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
首先显示的是我们的原始图像。
这里写图片描述

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

奇迹发生了。人脸识别出来了。
这里写图片描述

是不是觉得很有趣?

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

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

1.1. 图像的加载,显示和保存
1.2. 图像知识基础
1.3. 绘图
1.4. 基本图像处理
1.4.1 平移、旋转、缩放、翻转-之理论
1.4.2 裁剪
1.4.3 算术运算
1.4.4 位运算
1.4.5 掩膜(mask)
1.4.6 通道分离及合并
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 ……