利用python开启自己的摄像头
今天有个朋友介绍做一个车牌识别系统,那么首先呢就是开启摄像头是吧,嘻嘻嘻
直接上源码
# -*- coding:utf8 -*-
# 导入cv2库
import cv2 as cv
# 打开摄像头
cap = cv.VideoCapture(0)
while (True):
# 开始用摄像头读数据,返回hx为true则表示读成功,frame为读的图像
hx, frame = cap.read()
# 如果hx为Flase表示开启摄像头失败,那么就输出"read vido error"并退出程序
if hx is False:
# 打印报错
print('read video error')
# 退出程序
exit(0)
# 显示摄像头图像,其中的video为窗口名称,frame为图像
cv.imshow('video', frame)
# 监测键盘输入是否为q,为q则退出程序
if cv.waitKey(1) & 0xFF == ord('q'): # 按q退出
break
# 释放摄像头
cap.release()
# 结束所有窗口
cv.destroyAllWindows()
- 关于 if cv.waitKey(1) & 0xFF == ord(‘q’): 的解释:
- cv.waitKey(1):这个表示每一秒(1的参数的作用)监测一下键盘上的输入,并转化成二进制
- & : 运算符,进行AND运算
- 0xFF:转化为二进制为0b111111111
- ord():作用是将()里面的字符转化成 ASCII 数值,这里是将q转换为 ASCII 数值,也就是0b01110001
- 总体效果:如果用户在莫一秒内按下“q”键盘按键,那么q的waitKeyre返回DECIMAL VALUE是113。在二进制中,它表示为0b01110001。接下来,执行AND运算符,两个输入分别是0b01110001和0xFF(0b111111111)。0b01110001和0b11111111做AND运算=0b01110001。确切的结果是DECIMAL VALUE的q。其次,将左表达式0b01110001的值与ord(‘q’)进行比较。显然,这些值与另一个值相同,就会执行break跳出循环