python
复制代码
from DkamSDK import *
import numpy as np
print('Hello ZhiSENSOR')
class DkamSDK_class:
# 将分配的数据定义成全局变量,避免内存增长
def __init__(self):
self.point = PhotoInfoCSharp()
self.gray = PhotoInfoCSharp()
self.rgb = PhotoInfoCSharp()
self.point_num = 0
self.pointpixel = None
self.gray_num = 0
self.graypixel = None
self.rgb_num = 0
self.rgbpixel = None
self.gray_cloud = None
self.rgb_cloud = None
def connectSave(self):
#**********************************************查询、连接相机****************************************************
camera_num = DiscoverCamera()
print("局域网内共有",camera_num,"台3D相机")
#显示局域网内相机的IP
for i in range(camera_num):
print("局域网内相机IP为:",CameraIP(i))
if CameraIP(i) == b'192.168.40.11':
camera_ret = i
#print(camera_ret)
#连接相机
camera = CreateCamera(camera_ret)
connect = CameraConnect(camera)
if connect == 0:
print("相机连接成功!")
#**********************************************获取内参****************************************************
#定义存放参数的数组
kc = new_floatArray(5) #5个float型
kk = new_floatArray(9) #9个float型
print("获取红外镜头内参中......")
grayPara = 0 #0代表红外镜头
getInternelGray = GetCamInternelParameter(camera, grayPara, kc, kk)
if getInternelGray == 0:
print("红外镜头内参获取成功!")
print("红外镜头畸变参数为:")
print("K1 = %e" %floatArray_getitem(kc,0))
print("K2 = %e" %floatArray_getitem(kc,1))
print("P1 = %e" %floatArray_getitem(kc,2))
print("P2 = %e" %floatArray_getitem(kc,3))
print("K3 = %e" %floatArray_getitem(kc,4))
print("红外镜头内参为(按行输出):")
for n in range(9):
print("kk:%e" %floatArray_getitem(kk, n))
else:
print("红外镜头内参获取失败!!!。。。错误码",getInternelGray)
print("获取RGB镜头内参中......")
RGBPara = 1 #1代表RGB镜头
getInternelRGB = GetCamInternelParameter(camera, RGBPara, kc, kk)
if getInternelRGB == 0:
print("RGB镜头内参获取成功!")
print("RGB镜头畸变参数为:")
print("K1 = %e" %floatArray_getitem(kc,0))
print("K2 = %e" %floatArray_getitem(kc,1))
print("P1 = %e" %floatArray_getitem(kc,2))
print("P2 = %e" %floatArray_getitem(kc,3))
print("K3 = %e" %floatArray_getitem(kc,4))
print("RGB镜头内参为(按行输出):")
for n in range(9):
print("kk:%e" %floatArray_getitem(kk, n))
else:
print("RGB镜头内参获取失败!!!。。。错误码",getInternelRGB)
#**********************************************获取RGB与红外的外参****************************************************
#外参
r = new_floatArray(9)
t = new_floatArray(3)
print("获取RGB镜头相对红外镜头的外参:")
RGBExPara = 1
getExternel = GetCamExternelParameter(camera, RGBExPara, r, t)
if getExternel == 0:
print("RGB镜头相对红外镜头的外参获取成功!")
print("RGB镜头相对红外镜头的外参为(按行输出):")
for j in range(0,9):
print("R:%e" % floatArray_getitem(r, j))
for m in range(0,3):
print("T:%e" % floatArray_getitem(t, m))
else:
print("RGB镜头相对红外镜头的外参获取失败!!!。。。错误码",getExternel)
#**********************************************结束工作***************************************
# 断开相机
disconnect = CameraDisconnect(camera)
if disconnect == 0:
print("成功断开相机!")
else:
print("断开相机失败!!! 错误码:",disconnect)
#销毁相机
DestroyCamera(camera)
else:
print("相机连接失败,失败代码:",connect)
if __name__ == '__main__':
DkamSDK_camera = DkamSDK_class()
DkamSDK_camera.connectSave()