捕获摄像头实时图像
这一点非常非常重要,因为这一点关乎了以后我们进行各种各样的识别(人脸识别,车牌识别等等有趣的识别)。opencv提供了一个接口,可以轻松的让我们实现这个功能。我们先来看一段代码,根据上一篇的学习,希望大家先看代码,再来看后面的详细解释。
# -*- coding:utf-8 -*-
"""
Created on Sun Dec 27 13:44:57 2016
@author: Y
"""
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while(True):
ret,frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
下面我来详细的解释一下;
首先要调用两个库,
然后就是新的东西,我们用
- cap = cv2.VideoCapture(0)
来进行捕获,我用的是笔记本,所以摄像头是默认的摄像头,参数为0;
如果要用别的摄像头,可以设置别的参数来选择摄像头。现在还没有别的摄像头,日后装了新的摄像头,会具体研究一下参数问题。
- ret,frame = cap.read()
我们用ret表示检测,用frame来表示帧, 用cap.read()函数来捕获摄像头出现的东西。
- gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
上一章中提到过灰度检测,这句简单而言就是将摄像头捕获到的用帧的形式,将每一帧都转化成灰度图像,再联结起来,顾名思义,我们马上就要控制视频播放速度,有时换一个速度看这个世界,你就会发下很多你平时注意不到的东西。
- cv2.imshow('frame',gray)
imshow上一章也提过,这是显示图像的,只不过这一张显示帧,上一张显示图像。
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
上一章中cv2.waitKey()中的参数是0,当参数是1(1>0)的时候,这时我们等待键盘按键,当我们按下q的时候,退出视频捕获。
然后要释放捕获,我们用cap.release()来释放。
紧接着用cv2.destroyAllWindows()关闭所有窗口。
今天就这一任务,这个是未来创造的关键与保证 。