From 399bb4d566428c25468efb535129619ff9e94494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Fri, 27 Jun 2025 09:52:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=B8=80=E6=AC=A1=E6=8B=8D?= =?UTF-8?q?=E6=91=84=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=93=81=E7=B1=BB=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=9C=80=E5=90=8E=E6=A0=B9=E6=8D=AE=E5=93=81?= =?UTF-8?q?=E7=B1=BB=E6=9D=A5=E8=BF=9B=E8=A1=8C=E6=8B=8D=E6=91=84=E5=92=8C?= =?UTF-8?q?=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Point.py | 86 ++++++++++++- SimpleView_SaveImage.py | 119 +++++++++--------- __pycache__/Point.cpython-311.pyc | Bin 8045 -> 11217 bytes .../SimpleView_SaveImage.cpython-311.pyc | Bin 7706 -> 8807 bytes config.py | 29 +++++ config/camera/00DA6823936.json | 12 +- config/cut/00DA6823936.json | 24 ---- config/template/45.json | 6 + config/配置文件说明.txt | 14 +++ 9 files changed, 197 insertions(+), 93 deletions(-) delete mode 100644 config/cut/00DA6823936.json create mode 100644 config/template/45.json diff --git a/Point.py b/Point.py index 1b1c795..158d60b 100644 --- a/Point.py +++ b/Point.py @@ -2,7 +2,6 @@ import numpy as np from PIL import Image import math -import SimpleView_SaveImage import config from cat import clip_and_rotate_point_cloud, merge_point_clouds from image import detect_large_holes @@ -126,6 +125,85 @@ def tiff_depth_to_point_cloud(tiff_path,sn, dedup=True): return points + +# 新增点云数据转换函数 +def convert_sdk_points(sValue, width, height): + """ + 将 SDK 原始点云数据转换为 NumPy 点云数组 + + :param sValue: tuple(float), SDK 输出的扁平化点云数据 + :param width: int, 点云宽度 + :param height: int, 点云高度 + :return: np.ndarray(shape=(N,3)), 三维点云数组 + """ + points = np.array(sValue).reshape(-1, 3) # 形状转换 (N,3) + # 剔除无效点(X/Y/Z 任一为 NaN 或 Inf) + mask = np.all(np.isfinite(points), axis=1) + return points[mask] + + +def process_point_cloud(points, sn, dedup=True): + """ + 对原始点云应用旋转、裁剪和去重 + + :param points: np.ndarray(shape=(N,3)), 原始点云数据 + :param sn: str, 设备序列号(用于加载配置) + :param dedup: bool, 是否启用去重 + :return: list of [x, y, z], 处理后的点云列表 + """ + # 加载配置参数 + clip_config = config.CUT_CONFIG_MAP.get(sn) + if clip_config: + min_pt = np.array(clip_config.get("min_pt", [-np.inf] * 3)) + max_pt = np.array(clip_config.get("max_pt", [np.inf] * 3)) + rotation = np.array(clip_config.get("rotation", [1, 0, 0, 0, 1, 0, 0, 0, 1])).reshape(3, 3) + else: + min_pt = max_pt = rotation = None + + processed_points = [] + seen_xy = set() + + for point in points: + x, y, z = point + + # 无效点过滤(Z ≤ 0 或超出最大距离) + if z <= 0 or z > config.CAMERA_CONFIG_MAP[sn].get("max_z", np.inf): + continue + + # 应用旋转矩阵 + if clip_config: + rotated = rotation @ point + if not np.all(rotated >= min_pt) or not np.all(rotated <= max_pt): + continue + x_final, y_final, z_final = rotated + else: + x_final, y_final, z_final = x, y, z + + # 去重逻辑(保留浮点精度) + if dedup: + # 使用浮点哈希避免离散化损失 + key = (round(x_final, 3), round(y_final, 3)) + if key in seen_xy: + continue + seen_xy.add(key) + + processed_points.append([x_final, y_final, z_final]) + + return processed_points + + +def sValue_to_pcd(sValue,stPointCloudImage,sn): + # 数据格式转换 + points = convert_sdk_points(sValue, stPointCloudImage.nWidth, stPointCloudImage.nHeight) + + # 应用旋转、裁剪、去重(假设设备序列号已知) + processed_points = process_point_cloud(points, sn, dedup=True) + + output_ply_path = config.save_path("pcd", sn + ".pcd") + # 保存结果 + write_pcd(output_ply_path, processed_points) + + def write_pcd(filename, points): """ 将点云写入 PCD 文件 @@ -155,8 +233,4 @@ def write_pcd(filename, points): if __name__ == '__main__': - paths = SimpleView_SaveImage.pic("00DA6823936") - tiff_depth_to_point_clouds(paths, "00DA6823936") - # tiff_depth_to_point_clouds(["D:/PycharmProjects/Hik3D/image/2025-06-24/depth/145209062_-Depth.tiff" - # ,"D:/PycharmProjects/Hik3D/image/2025-06-24/depth/145209062_-Depth.tiff" - # ,"D:/PycharmProjects/Hik3D/image/2025-06-24/depth/145209062_-Depth.tiff"], "00DA6823936") \ No newline at end of file + tiff_depth_to_point_cloud("D:/git/test/hik3d-python/image/2025-06-26/depth/191330147_-Depth.tiff", "00DA6823936") diff --git a/SimpleView_SaveImage.py b/SimpleView_SaveImage.py index 450667e..936f1b1 100644 --- a/SimpleView_SaveImage.py +++ b/SimpleView_SaveImage.py @@ -7,7 +7,7 @@ import os import struct from ctypes import * from datetime import datetime - +import Point as point from Mv3dRgbdImport.Mv3dRgbdDefine import * from Mv3dRgbdImport.Mv3dRgbdApi import * from Mv3dRgbdImport.Mv3dRgbdDefine import DeviceType_Ethernet, DeviceType_USB, DeviceType_Ethernet_Vir, DeviceType_USB_Vir, MV3D_RGBD_FLOAT_EXPOSURETIME, \ @@ -15,7 +15,6 @@ from Mv3dRgbdImport.Mv3dRgbdDefine import DeviceType_Ethernet, DeviceType_USB, D FileType_BMP,FileType_TIFF,ImageType_Depth, ImageType_RGB8_Planar, ImageType_YUV420SP_NV12 ,ImageType_YUV420SP_NV21 , ImageType_YUV422, ImageType_Mono8 import config as configMap - # 全局变量 SN_MAP = {} # {sn: camera_instance} @@ -52,7 +51,6 @@ def initialize_devices(): SN_MAP[serial_number] = camera print(f"Successfully added device {serial_number} to SN_MAP") - def pic(sn): camera = SN_MAP.get(sn) @@ -65,19 +63,15 @@ def pic(sn): print(f"No config found for SN: {sn}") return - time_on = config.get("time_on", 0) # 延时开始(毫秒) - time_off = config.get("time_off", 0) # 拍照总时长(毫秒) - time_hop = config.get("time_hop", 0) # 每次拍照间隔(毫秒) - - end_time = time.time() + (time_off / 1000.0) + time_on = config.get("time_on", 0) # 延时开始(毫秒) print(f"Delaying start by {time_on}ms...") time.sleep(time_on / 1000.0) # 转成秒 - - frame_count = 0 - - saved_tiff_files = [] # 用于存储保存的 TIFF 文件路径 - print(f"Start continuous capturing for {time_off}ms...") + saved_files = { + "depth": [], + "color": [], + "pcd": [] + } # 开始取流 ret = camera.MV3D_RGBD_Start() @@ -86,56 +80,67 @@ def pic(sn): return try: - while time.time() < end_time: - stFrameData = MV3D_RGBD_FRAME_DATA() - - # 获取帧数据 - ret = camera.MV3D_RGBD_FetchFrame(pointer(stFrameData), 5000) - if ret == MV3D_RGBD_OK: - frame_count += 1 - - for i in range(stFrameData.nImageCount): - image_info = stFrameData.stImageData[i] - - # 保存深度图 - if image_info.enImageType == ImageType_Depth: - file_name = configMap.save_path("depth","-Depth") - ret_save = camera.MV3D_RGBD_SaveImage(pointer(image_info), FileType_TIFF, file_name) - print("Saved depth image." if ret_save == MV3D_RGBD_OK else "Failed to save depth image.") - if ret_save == MV3D_RGBD_OK: - saved_tiff_files.append(file_name) # 记录保存的 TIFF 文件路径 - # print(f"Saved depth image: {file_name}") - else: - print("Failed to save depth image.") - - # 保存彩色图 - elif image_info.enImageType in ( + stFrameData = MV3D_RGBD_FRAME_DATA() + + # 获取单帧数据 + ret = camera.MV3D_RGBD_FetchFrame(pointer(stFrameData), 5000) + if ret == MV3D_RGBD_OK: + + for i in range(stFrameData.nImageCount): + image_info = stFrameData.stImageData[i] + + # 保存深度图 + if image_info.enImageType == ImageType_Depth: + file_name = configMap.save_path("depth", "-Depth") + ret_save = camera.MV3D_RGBD_SaveImage(pointer(image_info), FileType_TIFF, file_name) + print("Saved depth image." if ret_save == MV3D_RGBD_OK else "Failed to save depth image.") + if ret_save == MV3D_RGBD_OK: + saved_files["depth"].append(file_name) + + # 点云转换与保存 + stPointCloudImage = MV3D_RGBD_IMAGE_DATA() + ret = camera.MV3D_RGBD_MapDepthToPointCloud(pointer(stFrameData.stImageData[i]), pointer(stPointCloudImage)) + if MV3D_RGBD_OK != ret: + print("_MapDepthToPointCloud() Run failed...") + else: + print( + "_MapDepthToPointCloud() Run Succeed: framenum (%d) height(%d) width(%d) len (%d)!" % ( + stPointCloudImage.nFrameNum, + stPointCloudImage.nHeight, stPointCloudImage.nWidth, stPointCloudImage.nDataLen)) + strMode = string_at(stPointCloudImage.pData, stPointCloudImage.nDataLen) + sValue = struct.unpack('f' * int(stPointCloudImage.nHeight * stPointCloudImage.nWidth * 3), + strMode) + pcd_file = point.sValue_to_pcd(sValue, stPointCloudImage, sn) + if pcd_file: + saved_files["pcd"].append(pcd_file) + + # 保存彩色图 + elif image_info.enImageType in ( ImageType_RGB8_Planar, ImageType_YUV420SP_NV12, ImageType_YUV420SP_NV21, ImageType_YUV422 - ): - file_name = configMap.save_path("color","-_Color") - ret_save = camera.MV3D_RGBD_SaveImage(pointer(image_info), FileType_BMP, file_name) - print("Saved color image." if ret_save == MV3D_RGBD_OK else "Failed to save color image.") + ): + file_name = configMap.save_path("color", "-_Color") + ret_save = camera.MV3D_RGBD_SaveImage(pointer(image_info), FileType_BMP, file_name) + print("Saved color image." if ret_save == MV3D_RGBD_OK else "Failed to save color image.") + if ret_save == MV3D_RGBD_OK: + saved_files["color"].append(file_name) - # 保存灰度图 - elif image_info.enImageType == ImageType_Mono8: - file_name = configMap.save_path("Mono","-_Mono") - ret_save = camera.MV3D_RGBD_SaveImage(pointer(image_info), FileType_BMP, file_name) - print("Saved mono image." if ret_save == MV3D_RGBD_OK else "Failed to save mono image.") - - else: - print(f"Unknown image type: {image_info.enImageType}") - - else: - print("Failed to fetch frame.") - - time.sleep(time_hop / 1000.0) # 控制采集频率 + else: + print("Failed to fetch frame.") finally: - # 停止取流 camera.MV3D_RGBD_Stop() - print("Continuous capture completed.") - return saved_tiff_files + print("Single capture completed.") + + # 输出结果路径 + print("Saved files:") + for key, paths in saved_files.items(): + if paths: + print(f" {key.upper()}:") + for path in paths: + print(f" - {path}") + + return saved_files initialize_devices() diff --git a/__pycache__/Point.cpython-311.pyc b/__pycache__/Point.cpython-311.pyc index 782ed1b19d2d7924830dbe5cfa8dd44b4657edf5..42d59a1c50034fc3538df99c716f5d979463365f 100644 GIT binary patch delta 3121 zcmaJ@YitwQ6~1GS?Q!gJ{0Om4UWSr~HzCdgOcEYiLP~alWmyr(HiflJX5u)B9~zI@ z4ISgKN_Pz#sM%plRH>@_VnacYZMISfVpXZ#KmF60Xe3grNRi4UpR$Ep3XM68B zcAYHh)%f$h=bn4ceVp^%`_&<_-}EU-mH=4#z2}D)cHT5Ou<4uiP5tUIZAdqu3lReZ z1}H$`WBO3ZKnbjuQrbyuzySYs@ZU%glVE^^Ej?_Rs1n#Jr3?_ww1qN`s*r8Qqyn^& zA}Q0&FPxb9vn8_zE16rcxVfqH7Gzl>=D$e$qJtEphkD=69kToz z!(N%&Yg<-#s-YxbG_Zo&U;h!pZNMT=8)c+W=fE9UzlZTHI#-fX-GRRDDYHhJ3H7Ey z1>>8fc-|mQ5LT`o2r z9itnD#v*>!-J}?O@dYn`xUl+*$(5^DpaaE5a>K~GL5dyjas|U|(}pMc z!4rAmPO+n5Iv5ycHz}>%n=U9ZG#h8aU9NDnIZXK(#y{Q=8}>)(gAFH}+TCzU&*!hM zKK{Hg1+)%V5^loUcd#(^aElmp;%+R9``-)3+#048$=VR?M{o#2mI%g%g5e-byER#D zZtcu#sJ9n^1F7I4e{3{{Vgc>3i>X3F>tG~&k!Dz5j2iVtBXFfLh6YIh-iN)h;}9mm zH&$RWPraQU63Hrwta?h;E|RsG3o|=JvPmMFCXUJma?1P3&RdPsL!z}-vewQV77Wdz zp;U(*j4QnawdsqU8KTSd#00|vi%0E;&+7bi@dcgUACiI;C99(Up zBwImGcgPfMrUxJbZxoO#m zBb36C9L`@h+MUIFTHLGQ9~kYSpKzoyPg9~aVGe7#63)OG6K2>laVn;Z-Ilip0B72| z5u18TxAqRH5*E(F5f=fR^Fxlv7|@2=0cY7v92nqq86)aTLLXcyXAW$k77R>1<8+Wd z^l^KEJ{~?QCJuSw*6OX9mD?Xd?)cZll^4IgB47Q3{PC20*W zEjFBEB>qcvoh=1DJYTpWU(39B@?`C&*H@oB;C1GmMmhZu_T)VAC(Jd;CYSuX$<_1+ za{2~jpj_6=soO7pJ)>|6QwKLSm-G#&=0@-egp;{TVJED*NrpsX0)Yp?{|KQAH5FFq zM73rFh##0&5gbN|&2+=6+p2H^Q-;LoAemDL6z>JcS#y+$4AQX}P35WKO{8@eK_7xM z2u?%D>X-=YXK9Lg8;O2|U;xS0qx5*p3Tq1IxH@uwIm|JTZNo{P^y5~r9EIN~P! z#r^>g6*5p6pD7zpo)$XLCsy`Jm3^Y^jAT3W)OLQ+c3ybLC-^Ujwn51@m?Bcda;;k+ z+$k-Dboq3{vfU}*WzS5OtMn8-(YtK1uLFnXpaLn)lGT1ym%>u5DgU|_7|Aqt&71P3 z-}+^_{!!&SQ()jtSe2Eg8$u5NJ-TZ&@m@&TJFQ z>r%bXY};;mr|UCk7q>TxwkFBev<@)R`KRvBkIwJ=^U&h{6XKpXq&;sa(j~KFslg)} zYg4`H{^`JUV7b9P(>mjy4y5~2y~w;}9cc7bvMuSDwr6&Twq25K*YD|>-r2Xrx_wgJ zKEc|NI~mwe@J9BT-4NV5 zc)!8G)Q0=f<(}1rUsEn{CFF96WkI?qX5Ct55b0WC>?wFPCfOq>IA0I>19UEP(7nn8 z5WE8+hOVLF&?a*iv5$=?kF*Hv{tMFcL6`tCS(DKU4V_ZMt3vl_sr$zwc}^nFO&tA3 z3mlCz-r2VKKEd8C+PfutH;iAosk~Auugk<|F3fuGj*8`7QhC?Jn=($OB0`Nv#9Ji1 zMaX}1rS>r#Yvj3#A6Q$UzpUn620jn6>M=UZbnu^5IIy$)-zqAwzt62ye1#=1{jjIY z69}>%mX5KW;oxXHwL3b_4oAYCAX>1et)*@6?iTOvHm`@GqwKJ!wX?Ooy`^=}KHu&h zBxq)XLql0ZOH0pTZ%12uXS>&p^|`HCO*kHkjw>XURiAqO1cPFO*^2-jVpcuqXBmD+ zwd)W%nA|y_tx}F4OZa?Ye~9+^?gAx171H>YI1q|Z@iF=kGXXWx{Tcg?=c-%zN7cT) zQI!#Mtb+nnd$7uNuo);!kF~CY0yy~XH5K)El>onLS_rTr9+&XAkpI@z0N*aCoyr{k E3xyapW&i*H delta 557 zcmcZ@{??9fIWI340}#~hiOHBQIgw9-am_?^oqEO`wkWm~h7{%;_FRrAj$Fa=rvEso;Evefv3Ftq=GT6CJFtmF5;y7U=^O-eL~$^eJKnX)y+IMS?SP3vyD! zGE>XrgMn`K%uP&Bot&tpZ4EN^7Ds$M$olyBTg(NS$+uVw5=%0QS27gIgA4%K{)@vV zH$SB`C)KW~0LTS}Q1Q#jr?d>Yr7ti*(T&N!v=W$dm?rmYOIz@$T;Nf-!lSYv_9Bn* n6&~XT*BdNy7g*$GlrG4<$YOGZ#pD7EePCr^k-ESv3APOYeXE6W diff --git a/__pycache__/SimpleView_SaveImage.cpython-311.pyc b/__pycache__/SimpleView_SaveImage.cpython-311.pyc index eea7f62e136ae8da2dcf4853c6a799c624f8bd9f..a43789ea532994173160e5a5f8b119ea4b093fe9 100644 GIT binary patch delta 1755 zcmaJ>U2NM_6!x|AyDo9kG-;bSY0~wVZdqAiTi2B?o!7r51-fq2qIF&tJ8hc8NgZc{ zD$s(E5U8L{_obQuF%1>O9;g&)4@i4N8WImqWkF@BVlNXyLaY-^@HVbpg*Id2%KrS_ zbI$$lx#!rvdHfgJ`lZFP2SelF%hR*pxNlgSfaykO!~-(Mn2E($JY$~1wC5h}smqve zd`u5#sTh^@#=JoFfs8NKlEPwsR{tIr3$O-+tvJR7R*~)qP<=?!mj(5P?tM zg1=dh>8=A|2``^_}m47&I!}xUiiq`2*1}^tzx6P|Mn=6 zFim(D&7!Sp!LX7!t!|GAc2U1$WgV*kodw<717O#|vaKefp+wI8tBrV5H5T#aUEE#e zN!@}0!&boywZh_&Y5+=xoTI8U#NBY7Xk4_3{Z$)=&H1XFb&7*kuC07-0t@I+tV_k( z1F4phZ51`=j@BSm=`Fh$-cg(jZ1V{eXfKf^Y!%h%j#ewxp;hEoY403aT_Vy|hGF9H zEVJUdic4|AW)5`b)>mKVc-+j-uD33%w={@LP)&_BzPsz_Yr1*FNmoC=h@r z9A3~`zT|L##f5ez8qd>QUYwoEy_QSy;>k>|$aZ!6CyTs48Bb+6HW&;pO#WZknPMWr zaqKaFQix|czL@oQwX@y+SuQm*D{AywiWO%y=Ff1v<_;(z`KwNC1DtR80d&JxoIfur z4bgKUnwcCKqM5O1c;pmAho{1dZ^!z)Y!x#~upQv3`P7ZrV8H7W*VDJDe4P~`LRL|SnZr~t^R);-YBTw~ez45t{8S~SOUNLE`}s7HtM|7Qp-$gB|gR6^hpQ@@(RQ(gIQ z*A&3R07jdx7=!j#!DB24?>4o73jDF@{l$m-PgM2~$@_<-rtSy6wx4__*L^3y8@Yd4 zjwB?OlOxFrJtNaIoAhZZGF_oB$@Hbi1ZcSo{=`&VAs%`tnQu;CXs{4dJ>ehvGi{)pUvMmn36&*rxDi})L09;Ji_5E6t}K(Z=sY52s1 zb@ocVVYzoi8jHzeiAo16cd#oXo9#VcOs|FRIi!IJdElIMVNSj4a`RKuG*HX) zJDk@5Mmm;LAEcMlE2Hbywu-fF>uq?;eX%WSo9w~Xd)m*~2*t!O*?5X)7^SYamku93 zdMMNvI^5j`1DOV~2;ZslBo;MLy z|Ez^a@BqbFHZZ4Dy*A1pQ2}t^fw^wUux0RpVN|MJI0UW$Ky6{WaGZdf-hqDrBPhaS delta 721 zcmZWmOK1~O6n%H5$uyH>qM3Y}WHOV)XwsrqYYI|r)sSKZu}}kIOfBdXZS$#2B6X3C zqKGt9<8`4Hr3nD_z82f^T)~pD6!;8Zn@tUXp+R2C1Sd#FR!x^l zMp4ZaLkt;L7HGe^(R9s#jE7Y&#~26APW6!90hi1W*XK9~175vuSpln=sx0*%i=6(z zdXF(NTCyzSC)S5!LY4*XIW7vjSQxG2s?f)1GuY!;WvX)+-ykQd^@?rMVGJ;=+|`V0 zd}|Be-okgF>Ws0X>cUy)AoSp4abL_`1l6+ubb0Dc19AhZ@pau3*e7=4jB}`2g`((@ zpn9up`ddSY8fdA&Z&tU9c6m~Ctjm#bz#hYbE5$KSlNFc`VAv+&3zzH*{<}jlzKOJE zDF0Q|X1?eigB<;sL!QWiJA^l9^yu8JI42VOlPF%}XbGL`y z2+`L-a~`B~mYJ#2vbj{&&Yv!8ZFpU|?@rTe zZP0*(0ecL{Vlouv&roXoLFqG|3yr}?{e375riPjDwwn>JI07IwNDEFf*cIvj12YVv ASO5S3 diff --git a/config.py b/config.py index b230331..c41cc90 100644 --- a/config.py +++ b/config.py @@ -6,6 +6,7 @@ from datetime import datetime CAMERA_CONFIG_MAP = {} # {sn: config_dict} CUT_CONFIG_MAP = {} # {filename_without_ext: config_dict} DIRECTION_CAMERA = {} +TEMPLATE_MAP = {} def load_camera_configs(config_dir="./config/camera"): """ @@ -30,6 +31,32 @@ def load_camera_configs(config_dir="./config/camera"): print(f"[WARN] No 'sn' found in {filename}") except Exception as e: print(f"[ERROR] Failed to load {file_path}: {e}") + + + +def load_template_configs(config_dir="./config/template"): + """ + 加载 camera 配置,按 sn 建立映射 + """ + if not os.path.exists(config_dir): + print(f"[ERROR] Camera config directory does not exist: {config_dir}") + return + + for filename in os.listdir(config_dir): + if filename.endswith(".json"): + file_path = os.path.join(config_dir, filename) + try: + with open(file_path, "r", encoding="utf-8") as f: + config = json.load(f) + type = config.get("type") + if type: + TEMPLATE_MAP[type] = config + print(f"Loaded camera config: {type}") + else: + print(f"[WARN] No 'sn' found in {filename}") + except Exception as e: + print(f"[ERROR] Failed to load {file_path}: {e}") + load_camera_configs() def load_cut_configs(config_dir="./config/cut"): @@ -57,8 +84,10 @@ def load_configs(): CAMERA_CONFIG_MAP = {} # {sn: config_dict} CUT_CONFIG_MAP = {} # {filename_without_ext: config_dict} DIRECTION_CAMERA = {} + TEMPLATE_MAP = {} load_camera_configs() load_cut_configs() + load_template_configs() load_configs() diff --git a/config/camera/00DA6823936.json b/config/camera/00DA6823936.json index 55333d6..f22b34e 100644 --- a/config/camera/00DA6823936.json +++ b/config/camera/00DA6823936.json @@ -1,13 +1,13 @@ { "sn": "00DA6823936", "direction": "1", - "x_angle": 55, - "y_angle": 84, + "x_angle": 125, + "y_angle": 75, "save_pcd": true, "resolution": 8, - "max_z": 2000, + "max_z": 1800, "reverse_order": false, - "time_on": 300, - "time_off": 3500, - "time_hop": 500 + "time_on": 100, + "time_off": 5500, + "time_hop": 800 } \ No newline at end of file diff --git a/config/cut/00DA6823936.json b/config/cut/00DA6823936.json deleted file mode 100644 index 37c2314..0000000 --- a/config/cut/00DA6823936.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "floorHeight": 1, - "max_pt": [ - 59.17729568481445, - -177.37328052520752, - 823.2836303710938 - ], - "min_pt": [ - 0, - -1263.9830322265625, - 200.47930908203125 - ], - "rotation": [ - -0.0070345401763916016, - -0.9998821020126343, - 0.013652533292770386, - 0.4579751193523407, - -0.015358328819274902, - -0.8888324499130249, - 0.88893723487854, - -2.9802322387695312e-08, - 0.45802903175354004 - ] -} diff --git a/config/template/45.json b/config/template/45.json new file mode 100644 index 0000000..cd50c33 --- /dev/null +++ b/config/template/45.json @@ -0,0 +1,6 @@ +{ + "type": "45", + "width":"299", + "length":"355", + "high":"314" +} \ No newline at end of file diff --git a/config/配置文件说明.txt b/config/配置文件说明.txt index e69de29..caf4797 100644 --- a/config/配置文件说明.txt +++ b/config/配置文件说明.txt @@ -0,0 +1,14 @@ +camera文档 +{ + "sn": "00DA6823936",#sn + "direction": "1",#方向 + "x_angle": 55,#相机的水平视场角(相机自身的) + "y_angle": 84,#相机的垂直视场角 + "save_pcd": true,#是否保存pcd + "resolution": 8,#像素大小(可以调整来区别 + "max_z": 2000,#最大深度(裁剪之前的 + "reverse_order": false,#是否pcd组成的图片是否翻转 + "time_on": 300,#开始时间 + "time_off": 3500,#结束时间 + "time_hop": 500#时间间隔 +} \ No newline at end of file