Hello,各位朋友,我们可能会遇到一种情况,在线考试的时候需要电脑给自己拍照签到,如何我们自己也设计一个呢?让我们一起来了解python的一个工具包,叫openCV
全称(open source computer vision library),
翻译:open 开放的 source源代码 computer计算机 vision视觉 library仓库
简称:开源视觉库 综合用途就是 图像处理的
我们一起来看看原理吧。
首先我们介绍一下代码:
#导入opencv库
import cv2
接下来,介绍一下打开摄像头的代码
capture = cv2.VideoCapture(0)
打开摄像头,并返回变量caputre
我们可以理解为在cv2工具包中有一个功能叫做VideoCapture
也就是cv2的VideoCapture
通过这你能发现,cv2.VideoCapture中间的 . 号被翻译为 的
那么(0)代表啥呢,
( )代表参数,0代表第一个摄像头
capture则代表运行代码后的整个摄像头 变量,到了下文我们就用capture指代整个摄像头
接下来我们建立循环:
while True :
....
....
....
我们需要注意,循环下面的代码需要注意4个空格
后面的代码都是在循环中
然后我们使用capture.read()捕获摄像头的图像
ret, img = capture.read()
capture.read()
可以理解为摄像头的读取功能
一共返回两个变量,
第一个变量是返回是否捕捉到信息,也就是ret
第二个变量是返回具体图像,也就是img
通过分析我们可以理解,虽然一次性返回两个变量,但是img才是我们需要的
于是我们开始使用cv2.imshow显示图像
cv2.imshow('hello', img)
该语法是用cv2显示图像,里面有两个参数,
'hello' 是图像的名字,给使用者看的,可以随意更改,不影响使用
img是上面传下来的变量,代表图片的内容
谨慎更改名字,需要连同上面的img名字一起改掉
当然了,捕捉图像后我们可以开始拍摄。
if cv2.waitKey(1) == ord('q'):
break
相信大家都看到了,这个代码里面有个很明显的字母'q'
另外还有一个break,
如果大家有一定经历的话,相信这是按下q键就直接推出了
咋一看上面代码只是退出,和拍摄关系不大,于是我们接着往里面插入一段代码
插入在break前面
if cv2.waitKey(1) == ord('q'):
cv2.imwrite('hello.png',img)
插入代码保存图片,
第一个参数是文件名,可以写成abc.png
第二个参数是图片的变量
break
疑问解答:什么是参数?
参数就是可以参考的数据,每个代码在执行过程中需要人为提供数据,让程序有依据执行
于是在代码执行前,我们往括号里面手动添加的变量或者数字这些都可以理解为参数
代码整合
import cv2
导入视频
capture = cv2.VideoCapture(0)
while True :
获取一帧
ret, img = capture.read()
cv2.imshow('frame', img)
显示图片
if cv2.waitKey(1) == ord('q'):
cv2.imwrite('a.png',img)
break
看看效果
鼠标点击自己的程序,然后按下shift把输入法换成英文
按下q键,保存好程序
好啦,接下来来看下效果吧
果然,我成功的保存了一张自己的近照