我想制作一个使用OpenCV演示实时网络摄像头的程序,每当我按下SPACE都会拍照。
我正在使用python 3.6.4和OpenCV 4.1.1。对于一个程序来说,它是在tensorflow的帮助下拍照,并识别数据库中是否有人。这是我当前的代码:
cam = cv2.VideoCapture(0)
img_counter = 0
while True:
ret, frame = cam.read()
if not cam.isOpened():
raise IOError("Cannot use webcam")
elif cam.isOpened():
cv2.imshow('frame', frame)
if not ret:
break
if cv2.waitKey(1) == 27:
#ESC pressed
break
elif cv2.waitKey(1) == 32:
#SPACE pressed
img_name = 'students_{}.png'.format(img_counter)
cv2.imwrite(img_name, frame)
print(img_name + 'was captured')
img_counter += 1
cam.release()
cv2.destroyAllWindows()
当我运行它时,会引发此错误:
cv2。错误:OpenCV(4.1.1)C:\ projects \ opencv-python \ opencv \ modules \ highgui \ src \ window.cpp:352:错误:(-215:断言失败)size.width> 0 && size.height> 0在函数'cv :: imshow'
我现在的目标是使其显示网络摄像头,拍摄照片并将其保存在项目的文件夹中。
有人知道出什么问题了吗? 还是tensorflow是否具有不需要使用openCV的功能? 加油,加比
答案 0 :(得分:0)
找到了答案:我通过USB使用外部摄像机,因此不得不将cv2.VideoCapture(0)更改为cv2.VideoCapture(1) 我不确定是否有办法直接通过张量流来做到这一点,但我正在设法弄清楚。