接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在了,需要安装包的话可以去我的资源中下载使用,使用pip安装方式十分地便捷。
今天主要是基于opencv模块来调用笔记本的内置摄像头,然后从视频流中获取到人脸的图像数据用于之后的人脸识别项目,也就是为了构建可用的数据集。整个实现过程并不复杂,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!usr/bin/env python
#encoding:utf-8
'''
__author__:沂水寒城
功能: python opencv调用摄像头获取个人图片
使用方法:
启动摄像头后需要借助键盘输入操作来完成图片的获取工作
c(change): 生成存储目录
p(photo): 执行截图
q(quit): 退出拍摄
opencv简介
1、videocapture()方法打开摄像
摄像头变量 cv2.videocapture(n) n为整数内置摄像头为0,若有其他摄像头则依次为1,2,3,...
cap=cv2.videocapture(0) 打开内置摄像头
2、cap.isopened()方法判断摄像头是否处于打开,返回结果为:true、false
3、ret,img=cap.read() 读取图像
布尔变量,图像变量=cap.read()
4、cap.release() 释放摄像头
5、action=cv2.waitkey(n) 获取用户输入,同时可获取按键的ascll码值
'''
import os
import cv2
import sys
reload (sys)
sys.setdefaultencoding( 'utf-8' )
def cameraautoforpictures(savedir = 'data/' ):
'''
调用电脑摄像头来自动获取图片
'''
if not os.path.exists(savedir):
os.makedirs(savedir)
count = 1 #图片计数索引
cap = cv2.videocapture( 0 )
width,height,w = 640 , 480 , 360
cap. set (cv2.cap_prop_frame_width,width)
cap. set (cv2.cap_prop_frame_height,height)
crop_w_start = (width - w) / / 2
crop_h_start = (height - w) / / 2
print 'width: ' ,width
print 'height: ' ,height
while true:
ret,frame = cap.read() #获取相框
frame = frame[crop_h_start:crop_h_start + w,crop_w_start:crop_w_start + w] #展示相框
frame = cv2.flip(frame, 1 ,dst = none) #前置摄像头获取的画面是非镜面的,即左手会出现在画面的右侧,此处使用flip进行水平镜像处理
cv2.imshow( "capture" , frame)
action = cv2.waitkey( 1 ) & 0xff
if action = = ord ( 'c' ):
savedir = raw_input (u "请输入新的存储目录:" )
if not os.path.exists(savedir):
os.makedirs(savedir)
elif action = = ord ( 'p' ):
cv2.imwrite( "%s/%d.jpg" % (savedir,count),cv2.resize(frame, ( 224 , 224 ),interpolation = cv2.inter_area))
print (u "%s: %d 张图片" % (savedir,count))
count + = 1
if action = = ord ( 'q' ):
break
cap.release() #释放摄像头
cv2.destroyallwindows() #丢弃窗口
if __name__ = = '__main__' :
cameraautoforpictures(savedir = 'data/' )
|
上述代码的运行环境需要是python2,因为python2中才有reload方法,去掉那些语句就可以在python3中执行了,我们在python2的环境中执行结果截图如下:
我的保存路径是data,按q退出后,进入data文件夹下就可以看到自己的“靓照”了哈,好了数据集准备到此结束,接下来准备实战人脸识别。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/Together_CZ/article/details/87808392