1、生成数据集
这里我们需要从摄像头的实时视频中生成数据集,使用python+opencv库,代码如下:
import cv2 cap = cv2.VideoCapture(1) #计算机自带的摄像头为0,外部设备为1 i=0 while(1): ret,frame = cap.read() #ret:True/False,代表有没有读到图片 frame:当前截取一帧的图片 cv2.imshow("capture",frame) if (cv2.waitKey(1) & 0xFF) == ord('s'): #不断刷新图像,这里是1ms 返回值为当前键盘按键值 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #RGB图像转为单通道的灰度图像 gray = cv2.resize(gray,(320,240)) #图像大小为320*240 cv2.imwrite('F:/dlib-19.16/dlib-19.16/tools/imglab/build/images/%d.jpg'%i,gray)这里为抓取图片存在的地址,可以按照格式自定义地址 i += 1 if (cv2.waitKey(1) & 0xFF) == ord('q'): break cap.release() cv2.destroyAllWindows() 版权声明:本文为CSDN博主「Silvia+」的原创文章,遵循CC 4.0 BY-SA 原文链接:https://blog.csdn.net/wsf09/article/details/88042450
上述代码块在anaconda的jupyter notebook 环境下运行后,会出现:释放时错误[SourceReaderCB::~SourceReaderCB terminating async callback]
修改代码是
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
2、waitKey函数的功能:
①等待x ms,如果在此期间有按键按下,则立即结束并返回按键的ASCII码,否则返回-1;
②如果x=0,则无限等待下去,直到有按键按下;
【注】:在imshow之后,如果没有waitKey语句则不会显示图像。