opencv——连接/控制工业相机(海康)

使用Python/opencv连接及控制海康工业相机

1.自动抓取图像

通过接受前步传输的指令而实现相机的自动抓取图像

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 # 等待下一次的指令

2.定时抓取图像

通过自定义设置延时时间而实现相机的定时抓取图像

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()

3.特定按键控制抓取图像

通过自定义特定按键而实现相机的人为控制抓取图像

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工业相机控制的方法啦!

你可能感兴趣的:(opencv,计算机视觉,python)