import cv2 as cv
def video_demo():
#0是代表摄像头编号,只有一个的话默认为0capture=cv.VideoCapture(0) if not cap.isOpened():print("Cannot open camera")exit()while(True):ref,frame=capture.read()cv.imshow("1",frame)
#等待30ms显示图像,若过程中按“Esc”退出c= cv.waitKey(30) & 0xff if c==27:capture.release()break
video_demo()
cv.destroyAllWindows()
cv.VideoCapture(0):读取视频,当输入为0时,默认打开电脑摄像头unity调用摄像头,也可以使用输入视频文件的路径。
capture.read():返回两个值ref和frame,前者为True或False表示图像是否被读取,后者参数表示每张捕获的图像。
cv.inshow('name', frame):显示图片,无返回值3D角色,第一个参数为窗口名称,第二个参数为要显示的图片。
cv.waitKey(30) & 0xff:如果delay为0,cv.waitKey(delay)函数将没有返回值。 如果延时大于0,有key就返回key值。 如果没有密钥,它会在延迟秒后返回-1。 0xff的ASCII码为1111 1111,任意数及其&运算都等于自身。 Esc键的ASCII码是27unity调用摄像头硬件设备,所以当c==27时,相机被释放。 关于函数的更多解释,请参考博客。 (我不明白的是,如果没有键返回-1和0xff进行&操作,我试过30s前后按Esc,没有区别,30s后相机不会自动松开,所以我不明白这个delay30s的目的在哪里。)
cv.destroyAllWindows():清除所有窗口界面
本文首发于我的简书博客