2022 您所在的位置:网站首页 python打开外置摄像头 2022

2022

2023-11-21 15:29| 来源: 网络整理| 查看: 265

1.固定时间间隔自动截图 import cv2 ''' 调用usb摄像头 ''' cap = cv2.VideoCapture(1) n = 1 # 计数 timeF = 10 # 视频帧计数间隔频率 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 视频流中的帧宽 cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 视频流中的帧高 # cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc("M", "J", "P", "G")) # 返回解码方式中的四字符 # ?1为啥要重设 ''' 显示图像 ''' i = 0 while True: # 循环读取视频帧 ret, frame = cap.read() left_img = frame[:, 0:640, :] right_img = frame[:, 640:1280, :] # cv2.imshow("3D camera", frame) #双目相机图像一起输出 # 左右图像一起输出 cv2.imshow('left',left_img) cv2.imshow('right',right_img) if (n % timeF == 0): i +=1 print(i) cv2.imwrite('D:\\programme\\pictures01\\{}.jpg'.format(i), right_img) # 保存图片 n = n + 1 if cv2.waitKey(1) & 0xFF == ord("q"): break ''' 关闭 ''' cap.release() cv2.destroyAllWindows()

VideoCapture(): 有获得照相机的一切权利

参数是0,表示打开笔记本的内置摄像头;要打开外置摄像头参数可以从1开始尝试;参数是视频文件路径,则打开视频.

VideoCapture.set(int propertyId, double value) 设置VideoCapture类的属性,设置成功返回ture,失败返回false。

参数:第一个是属性ID,第二个是该属性要设置的值。

VideoCapture.read() 按帧读取视频,ret,frame是获cap.read()方法的两个返回值。

ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。 frame就是每一帧的图像,是个三维矩阵。

cv2.imwrite

第一个参数是文件名,第二个参数是图片资源。 文件名注意:层级之间最好直接使用\防止转义

cv2.waitKey(1) 在有按键按下的时候返回按键的ASCII值,否则返回-1

按位与& 全1为1,不全为0

VideoCapture.release() 释放摄像头,停止捕获视频

cv2.destroyAllWindows() 释放并销毁窗口,即关闭相应的显示窗口。

2.手动按键截图 import cv2 cap = cv2.VideoCapture(0,cv2.CAP_DSHOW) flag = cap.isOpened() index = 1 while (flag): ret, frame = cap.read() left_img = frame[:, 0:640, :] right_img = frame[:, 640:1280, :] cv2.imshow('left', left_img) cv2.imshow('right',right_img) # cv2.imshow("Capture_Camare", frame) k = cv2.waitKey(1) & 0xFF if k == ord('s'): # 按下s键,进入下面的保存图片操作 cv2.imwrite("D:\\programme\\pictures01\\" + str(index) + ".jpg", right_img) print("save" + str(index) + ".jpg successfuly!") print("-------------------------") index += 1 elif k == 27: # 按下Esc键,程序退出 break cap.release() cv2.destroyAllWindows()

waitKey() 在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下键,则继续等待(循环)

while(1){ if(waitKey(100)==27)break; } 在这个程序中,我们告诉OpenCv等待用户触发事件,等待时间为100ms,如果在这个时间段内,用户按下ESC(ASCII码为27),则跳出循环,否则,则跳出循环 如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件

cv2.VideoCapture(0,cv2.CAP_DSHOW) 不知道为什么,直接使用参数1无法像上一段代码一样正常打开USB摄像头,但是加上CAP_DSHOW参数并且改变摄像头序列就好了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有