机器学习的一个应用方向,是如何让机器去理解图像。包括对图像里物体的识别,跟踪和测量。

能做什么——无人驾驶汽车、人脸识别、车牌识别手势识别(游戏方向)

PIL静态的库

OpenCV 动态的库

import pandas as pd
import numpy as np
from PIL import Image train=pd.read_csv('train.csv') for ind,row in train.iloc[1:10].iterrows():
#第一行是label
i=row[0]
arr=np.array(row[1:],dtype=np.uint8)
arr.resize((28,28))
im=Image.fromarray(arr)
#ind是第几幅图像,i表示这个图像是几
#如果没有‘train_pics’这个文件夹会报错
im.save('./train_pics/%s-%s.png' % (ind,i))

opencv视频输入输出——因为环境配置问题,本程序没有运行:

################# 摄像头的输入,输出 ##################
def onMouse(event, x, y, flags, param):
# Event:
# CV_EVENT_MOUSEMOVE 0 滑动
# CV_EVENT_LBUTTONDOWN 1 左键点击
# CV_EVENT_RBUTTONDOWN 2 右键点击
# CV_EVENT_MBUTTONDOWN 3 中键点击
# CV_EVENT_LBUTTONUP 4 左键放开
# CV_EVENT_RBUTTONUP 5 右键放开
# CV_EVENT_MBUTTONUP 6 中键放开
# CV_EVENT_LBUTTONDBLCLK 7 左键双击
# CV_EVENT_RBUTTONDBLCLK 8 右键双击
# CV_EVENT_MBUTTONDBLCLK 9 中键双击 # x,y为鼠标点击位置 # flags:
# CV_EVENT_FLAG_LBUTTON 1 左键拖曳
# CV_EVENT_FLAG_RBUTTON 2 右键拖曳
# CV_EVENT_FLAG_MBUTTON 4 中键拖曳
# CV_EVENT_FLAG_CTRLKEY 8 (8~15)按Ctrl不放事件
# CV_EVENT_FLAG_SHIFTKEY 16 (16~31)按Shift不放事件
# CV_EVENT_FLAG_ALTKEY 32 (32~39)按Alt不放事件 # param: 自定义编号 global clicked
if event == cv2.cv.CV_EVENT_LBUTTONUP:
clicked = True clicked = False #读取摄像头输入
cameraCapture = cv2.VideoCapture(0)
cv2.namedWindow('MyCamera') #绑定鼠标callback
cv2.setMouseCallback('MyCamera', onMouse)
print u'点击窗口或者按任意键退出.'
success, frame = cameraCapture.read() while cv2.waitKey(1) == -1 and not clicked:
if frame is not None:
cv2.imshow('MyCamera', frame)
success, frame = cameraCapture.read() cv2.destroyWindow('MyCamera')

一、Haar级联分类器

  Harr级联分类器=Harr-like特征检测+Adaboost

  如何把若干个弱分类器变成一个强分类器。

# -*- coding: utf-8 -*-
# comment by heibanke import cv2 #实例化分类器
#实例化的函数的参数是xml文件,这个文件里边是训练奶好了的强分类器
face_cascade = cv2.CascadeClassifier('./xml/haarcascade_frontalface.xml')
eye_cascade = cv2.CascadeClassifier('./xml/haarcascade_eye.xml')
#打开图像
img = cv2.imread('./pics/test_faces.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#gray = cv2.imread('test1.jpg', cv2.CV_LOAD_IMAGE_GRAYSCALE) # detectMultiScale参数解释
# gray, 用于检测的灰度图像
# 1.2: scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数。——就是说搜索的时候不断把窗口按比例放大
# 例如1.1指将搜索窗口依次扩大10%。
# 2: min_neighbors 构成检测目标的相邻矩形的最小个数(缺省-1)。——只有判断相邻的矩形都有的时候才会判断为人脸,如果稍微缩小一下就不是了,那么它就不会当做人脸
# 如果组成检测目标的小矩形的个数和小于min_neighbors-1 都会被排除。
# 如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框。——我们选择2,是选择所有相邻的矩形都是脸的那个矩形
faces = face_cascade.detectMultiScale(gray, 1.2, 2)
for (x,y,w,h) in faces:
# cv2.rectangle参数解释
#(x,y)是矩形左上角
#(x+w,y+h)是矩形右下角
#(255,0,0)是矩形的RGB颜色, 为红色
#2, 是绘制矩形的线宽
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
#在人脸检测的基础上检测眼睛
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) cv2.imshow('img',img)
k=cv2.waitKey(0)
if k==27:
cv2.destroyWindow('test')

python计算机视觉——黑板客老师课程学习的更多相关文章

  1. python爬虫——黑板客老师课程学习

    程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...

  2. python类——黑板客老师课程学习

    1.基本语法 class class_name(base_class):  base_class是它继承的父类 class_var def methods(self,args): statements ...

  3. python画图—黑板客老师课程学习

    1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...

  4. python变量——黑板客老师课程学习

    1.和C++.Java的区别: 动态类型:不需要声明a的类型. a=34 type(a) <type  ‘int’> 一切皆对象: 4 2.数字: 自动转换类型:a=34  A=3.14 ...

  5. 线性代数和numpy——黑板客老师课程学习

    一.代数是什么 代数->数的抽象表示->向量空间(线性空间) 线代->线性代数 关系: 向量空间之间和内部转换是通过线性变换. 实数——一维空间的点 复数——二维空间的点 如果两个向 ...

  6. python语句表达式——黑板客老师课程学习

    1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input()   原始输入 ...

  7. pyhton函数——黑板客老师课程学习

    1.基本语法 语法: def func_name (arguments)  定义 statements return x,y x,y=func_name(para)   调用 作用域: 可以给内置的函 ...

  8. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  9. Python全栈day24(面向对象编程作业作业_定义学校老师课程班级学生类)

    面向对象作业 作业_定义学校老师课程班级学生类.py #面向对象编程作业,定义学校老师课程班级学生类 #定义几个类,尽可能定义多的数据属性及函数属性 class School: def __init_ ...

随机推荐

  1. [转载]MCU DSP ARM 嵌入式 之间的区别

    2016-06-28 10:31:24) 嵌入式"这是个概念,准确的定义没有,各个书上都有各自的定义.但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简 ...

  2. Java初学者入门应该掌握的30个概念

    1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构 是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一 ...

  3. find命令学习

    find命令与locate命令的区别: locate: 非实时查找: 依赖于索引,而索引构建非常占用资源,索引的创建是在系统空闲时系统自动进行,可以用updatedb命令更新索引: 查找速度快: 非精 ...

  4. NET-SNMP配置

    配置/etc/snmp/snmpd.conf such as below : ============================================== com2sec notCon ...

  5. Maven学习8-使用Maven构建多模块项目

    在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问 层).service(业务逻辑层).web(表现层),这样分层 ...

  6. elasticsearch【更新】操作

    基于上一篇博文基础上,进行es的操作,document的新增比较简单,就不说了,这里主要说说更新操作. 更新操作,有两大类,一个是Replace,一个是Update,就是说一个是替换,一个是更新. 替 ...

  7. Install Qt creator

    download qt for linux yum install dialog move download qt file(qt-opensource-linux-x64-5.6.0.run) fr ...

  8. Dockerfile指令

    指令的一般格式为INSTRUCTION arguments,指令包括FROM.MAINTAINER.RUN等. FROM 格式为FROM <image>或FROM <image> ...

  9. [zz] 混合高斯模型 Gaussian Mixture Model

    聚类(1)——混合高斯模型 Gaussian Mixture Model http://blog.csdn.net/jwh_bupt/article/details/7663885 聚类系列: 聚类( ...

  10. Linux下实现获取远程机器文件

    创建公钥秘钥实现无密码登录后即可获取到文件内容了!! A:xxx.xxx.6.xxx B:xxx.xxx.xxx.x 一.创建 A机器 ssh-keygen -t rsa 二.拷贝——将生成的公钥复制 ...