zoukankan      html  css  js  c++  java
  • python计算机视觉——黑板客老师课程学习

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

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

    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')
  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/shixisheng/p/5926404.html
Copyright © 2011-2022 走看看