python计算机视觉

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于python计算机视觉的主要内容,如果未能解决你的问题,请参考以下文章

《OpenCV3计算机视觉Python语言实现第2版》高清中英PDF+源代码学习

分享《OpenCV 3计算机视觉:Python语言实现(第2版)》中文PDF+英文PDF+源代码

分享《OpenCV 3计算机视觉:Python语言实现(第2版)》中文PDF+英文PDF+源代码

OpenCV 机器视觉入门精选 100 题(附 Python 代码)

推荐一个计算机视觉图书:python计算机视觉编程

10 行代码运行对象检测(一个图像识别的 Python 库)