basler图片采集代码
保存一下basler相机采集图片的程序
import os
from datetime import datetime
from pypylon import pylon
import requests
import time
import json
from threading import Threadimport sys# from detectron2_repo.demo.cashang import cashang_2
t = time.time()
class My_cameras:def __init__(self):self.camerasList = []# 搜索设备def create_cameras(self):tl_factory = pylon.TlFactory.GetInstance() # 实例化相机devices = tl_factory.EnumerateDevices()# print (len(devices))try:if len(devices) == 0:print("no camera found!")except Exception as e:print("cameras found:", len(devices))# 添加相机IPwith open('IP.json') as f:IP1 = json.load(f)path = list(IP1.keys())print(path)state_dic = {}my_devices = []for device in devices:if device.GetIpAddress() in path:my_devices.append(device)self.cameras = pylon.InstantCameraArray(len(my_devices))l = self.cameras.GetSize()print('cameras remaining:', l)# print("self.cameras",self.cameras)for i, cam in enumerate(self.cameras):# print(devices[i].GetIpAddress())cam.Attach(tl_factory.CreateDevice(my_devices[i]))# 打印相机的IP.print("Using device", cam.GetDeviceInfo().GetModelName(), cam.GetDeviceInfo().GetIpAddress())ip1 = cam.GetDeviceInfo().GetIpAddress().split(':')[0]# print(ip1,'normal')path.remove(ip1)state_dic[ip1] = 'normal'for i in path:# print(i,'abnormal')state_dic[i] = 'abnormal'print(state_dic)def setup_cameras(self):for camera in self.cameras:camera.Open()camera.ExposureTimeAbs.SetValue(3000) # set ExposureTime 曝光时间camera.TriggerSource.SetValue('Line1')camera.TriggerMode.SetValue('On') # 外触发camera.GevSCPSPacketSize.SetValue(9000) # packet_sizecamera.GevSCPD.SetValue(60000) # 延时camera.GainRaw.SetValue(50) # 增益camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)# 开启子线程t = Thread(target=saveImageData, args=(camera,), daemon=True)self.camerasList.append(t)print("所有相机参数设置完成,等待触发1")for t in self.camerasList:t.start()# 等待子线程介绍for t in self.camerasList:t.join()def saveImageData(camera):global ipo# 获取相机的IPip = camera.GetDeviceInfo().GetIpAddress().split(':')[0]print("IP:", ip, '等待触发')save_img = pylon.PylonImage()axleInfo = 0while True:try:grabResult = camera.RetrieveResult(20000, pylon.TimeoutHandling_ThrowException)if grabResult.GrabSucceeded():save_img.AttachGrabResultBuffer(grabResult)with open('IP.json') as f:ip_config = json.load(f)with open('path.json') as f1:axle_config = json.load(f1)filename = f"./pic/{axle_config['path1'][axleInfo]}/{ip_config[ip][0]}/{ip_config[ip][1]}.jpeg" # 相机命名print('相机IP',filename)save_img.Save(pylon.ImageFileFormat_Jpeg, filename, ipo)grabResult.Release()axleInfo += 1print(ip, "保存成功!", filename)except Exception as e:print("等待超时,退出程序!")save_img.Release()# grabResult.Release()# camera.StopGrabbing()camera.Close()breaksys.exit(1)return# def proce():
if __name__ == '__main__':with open('path.json') as f:f1 = json.load(f)path = f1['path1']for i in path:for j in ['left', 'right']:if not os.path.exists(f'./pic/{i}/{j}/'):os.makedirs(f'./pic/{i}/{j}/')ipo = pylon.ImagePersistenceOptions()ipo.SetQuality(quality=80)my_camera = My_cameras()my_camera.create_cameras()my_camera.setup_cameras()print('所有线程结束运行,开始图片处理!!')print(time.time() - t)# 这里调用图片处理的函数# cashang_2.method()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
