通过接受前步传输的指令而实现相机的自动抓取图像
import cv2
from datetime import datetime
while True: # 循环以不断拍摄
## 此处添加发出指令的程序
B = 1 # 假定前步给的指令/信号
if B == 1: # 接收到捕捉图像指令
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 设置图像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 设置帧率
while True:
reg, frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示图片
cv2.imshow('capture', frame_1)
now = datetime.now()
time = now.strftime("%Y-%m-%d,%H.%M.%S")
filename = str(time) + '.jpg' # filename为图像名字,将采集时间作为编号命名保存的截图
cv2.imwrite('D:\\Project\\picture' + '\\' + filename, frame_1) # 截图 前面为放在桌面的路径 frame为此时的图像
print(filename + '保存成功') # 打印保存成功
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
B = 0 # 等待下一次的指令
else:
print("未收到拍摄指令,等待下一次指令")
B = 0 # 等待下一次的指令
通过自定义设置延时时间而实现相机的定时抓取图像
import cv2
import time
cap = cv2.VideoCapture(1, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 设置图像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 设置帧率
i = 0 # 定时装置初始值
a = 1 # 截图数量控制
while True:
i = i + 1
reg, frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示图片
cv2.imshow('capture', frame_1)
time = time.strftime("%Y-%m-%d,%H.%M.%S", time.localtime())
if i == 50: # 定时装置,定时截屏,可以修改。
filename = str(time) + '.jpg' # filename为图像名字,将采集时间作为编号命名保存的截图
cv2.imwrite('D:\\Project\\picture' + '\\' + filename, frame_1) # 截图 前面为放在桌面的路径 frame为此时的图像
print(filename + '保存成功') # 打印保存成功
i = 0 # 清零
a = a + 1
if a > 20: # 最多截图20张(自定义) 然后退出
break
if cv2.waitKey(1) & 0xff == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
通过自定义特定按键而实现相机的人为控制抓取图像
import cv2
import time
cap = cv2.VideoCapture(1,cv2.CAP_DSHOW)
# cap.set(cv2.CAP_PROP_POS_FRAMES,50)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 3072) # 设置图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 2048) # 设置图像高度
cap.set(cv2.CAP_PROP_FPS , 6) # 设置帧率
i = 1
# 也可写成while True
while(1):
"""
ret:True或者False,代表有没有读取到图片
frame:表示截取到一帧的图片
"""
ret,frame = cap.read()
frame_1 = cv2.resize(frame, (640, 512))
# 展示图片
cv2.imshow('capture',frame_1)
time = time.strftime("%Y-%m-%d,%H.%M.%S", time.localtime())
# 保存图片
k=cv2.waitKey(1)
if k==ord('k'): #自定义按键
cv2.imwrite(r"D:\Project\picture\\"+ str(time) + ".jpg",frame_1) #存储路径
i = i + 1
if k==ord('q'):
break
#释放对象和销毁窗口
cap.release()
cv2.destroyAllWindows()
以上就是三种实现Python/opencv工业相机控制的方法啦!