今天就跟大家聊聊有关怎么在Python中使用opencv调用摄像头获取个人图片,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。
具体如下:
#!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的环境中执行结果截图如下:
看完上述内容,你们对怎么在Python中使用opencv调用摄像头获取个人图片有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。