Present replay 3D with the cursor and open Analyze on a remembered video
Replay left the 3D pane on the rest mesh or a sparse overlay, and Analyze skipped the setup dialog unless the file was re-picked. Live Run no longer starts a chain on a video path. Verified with Studio tests for flush, overlay mask, Analyze open, live-video refusal, and locales.
This commit is contained in:
@@ -2,8 +2,7 @@
|
||||
"app": {
|
||||
"title": "Orisys Studio",
|
||||
"about_title": "About",
|
||||
"about_body": "Orisys Studio desktop application\nVersion: {app_version}",
|
||||
"scaffold_hint": "Scaffold shell — acquisition coming later"
|
||||
"about_body": "Orisys Studio desktop application\nVersion: {app_version}"
|
||||
},
|
||||
"brand": {
|
||||
"name": "ORISYS",
|
||||
@@ -40,8 +39,10 @@
|
||||
"settings": "Settings area",
|
||||
"plot_settings": "Plot settings…",
|
||||
"rotate_arrows": "Rotate arrows 90°",
|
||||
"recompute": "Recompute forces from the video",
|
||||
"recompute_tip": "Off: the charts read the recorded forces.csv. On: re-run the vision pipeline over the recorded video (an algorithm check, forward-only).",
|
||||
"recompute": "Analyze video",
|
||||
"recompute_tip": "On: serve a stored analysis result for this video, or run the pass if there is none. Off: leave analysis and read the recording’s own forces.csv when it has one. To change profile, calibration or reference frame use View ▸ Analysis setup…",
|
||||
"analysis_setup": "Analysis setup…",
|
||||
"analysis_setup_tip": "Choose the profile, calibration and reference frame for this video, then run (or re-run) the analysis pass.",
|
||||
"run": "Run / Stop",
|
||||
"stop": "Cancel acquisition",
|
||||
"preview": "Preview / Stop preview",
|
||||
@@ -113,8 +114,8 @@
|
||||
"use_camera_tip": "Go back to acquiring from a camera (the data source is a video file)",
|
||||
"choose_video": "Choose a recorded video…",
|
||||
"choose_video_tip": "Open a recorded video: the 2D panel plays it and the charts read the forces.csv beside it",
|
||||
"recompute": "Recompute from video…",
|
||||
"recompute_tip": "Run the pipeline over this recording again: the 2D panel then shows the processed image (the recording itself stores only the raw camera image) and the charts and 3D view use the recomputed values. You can press Stop at any time.",
|
||||
"recompute": "Analyze video…",
|
||||
"recompute_tip": "Serve a stored analysis result for this video, or run the pass if there is none. The 2D panel can then draw arrows and depth; the charts may show force from the result. Stop cancels a pass that is still running. To change profile, calibration or reference frame use View ▸ Analysis setup…",
|
||||
"replay_view_only": "Open a recording from the History replay view",
|
||||
"preview": "Preview",
|
||||
"preview_stop": "Stop preview",
|
||||
@@ -126,13 +127,14 @@
|
||||
"cancel_tip": "Abort the connection (always available while connecting, shortcut Esc)",
|
||||
"run_unavailable": "Not available yet",
|
||||
"run_disabled_video": "Select a video file first",
|
||||
"run_video_in_replay": "Play a video from the History replay view (Play and the chart cursor)",
|
||||
"run_disabled_sensor": "Run is not available for this sensor type",
|
||||
"playback": "▶ Play",
|
||||
"playback_pause": "⏸ Pause",
|
||||
"playback_tip": "Play this recording at 1× (space bar does the same); dragging the cursor pauses",
|
||||
"playback_pause_tip": "Pause playback (dragging the cursor, box zoom or the wheel also pauses)",
|
||||
"playback_disabled": "Open a recorded video first (“Choose a recorded video…” at the top left)",
|
||||
"playback_needs_recording": "This video has no recording beside it (no forces.csv): replay needs a recording; to just watch the video use View ▸ Recompute forces from the video",
|
||||
"playback_needs_recording": "This video has no recording beside it (no forces.csv): replay needs a recording; to just watch the video open it as a video, or use View ▸ Analyze video",
|
||||
"playback_video_only": "Play this video (no recording beside it: the picture plays, the force charts are empty)",
|
||||
"reset_sensor": "Reset sensor",
|
||||
"reset_sensor_tip": "Zero the sensor tracker (the device's own zero). Zeroing it also restarts the display baseline, so the curves and the value cards re-learn their zero from the next quiet samples; the curve history is kept — View ▸ Reset views (F8) clears the views.",
|
||||
@@ -140,7 +142,6 @@
|
||||
"reset_display": "Reset display",
|
||||
"reset_display_tip": "Clear the accumulated display: the curves, cursor and value cards go back to their defaults and the replay returns to the start of the recording. There is no device session in this view, so nothing of the device is touched; the 3D camera is View ▸ Reset views (F8).",
|
||||
"pause": "⏸ Pause",
|
||||
"pause_resume": "▶",
|
||||
"pause_tip": "Pause the computation and the display (F7): no flow, depth or contact is computed, the picture holds its last frame, and the device stays connected for an immediate resume. A recording that spans a pause has a gap.",
|
||||
"resume_tip": "Resume the computation and the display (F7), from the newest frame.",
|
||||
"resume_label": "▶ Resume",
|
||||
@@ -155,8 +156,7 @@
|
||||
"units_newton": "Newton",
|
||||
"units_raw": "Raw",
|
||||
"settings": "Settings",
|
||||
"settings_tip": "Show or hide the unit, record-mode and preview controls",
|
||||
"stopped_analysis": "analysis"
|
||||
"settings_tip": "Show or hide the unit, record-mode and preview controls"
|
||||
},
|
||||
"units": {
|
||||
"newton_short": "N",
|
||||
@@ -181,11 +181,24 @@
|
||||
"export_identity": "file identity type {sensor_type} · SN {sn} · config {config}",
|
||||
"thumb_placeholder": "Product model",
|
||||
"family_unidentified": "Unidentified",
|
||||
"catalog_profile": "Profile {profile_id} · {shape} · from {origin} · SDK validation: {state}",
|
||||
"catalog_name": "name {name} · folder {folder}",
|
||||
"catalog_profile": "Profile {profile_id} · {shape} · from {origin}",
|
||||
"catalog_root": "root {origin}: {path}",
|
||||
"catalog_state": "SDK validation: {state} ({note})",
|
||||
"catalog_state_ok": "processing can start",
|
||||
"catalog_state_degraded": "processing can start; something optional is missing",
|
||||
"catalog_state_failed": "processing cannot start",
|
||||
"catalog_state_invalid": "no bundle could be read here",
|
||||
"catalog_state_unknown": "verdict not recognised",
|
||||
"catalog_calibration_selected": "Calibration selected: {name}",
|
||||
"catalog_calibration_none": "No calibration selected — raw force",
|
||||
"catalog_duplicate": "Also provided by {refs}",
|
||||
"catalog_shape_descriptor": "descriptor bundle",
|
||||
"catalog_shape_compatibility": "compatibility bundle, no descriptor",
|
||||
"catalog_shape_unreadable": "no readable bundle",
|
||||
"catalog_blocked": "Cannot start: {reason}"
|
||||
"catalog_blocked": "Cannot start: {reason}",
|
||||
"catalog_warning": "Warning: {sentence}",
|
||||
"catalog_error": "Error: {sentence}"
|
||||
},
|
||||
"panels": {
|
||||
"arrow": "2D image",
|
||||
@@ -195,8 +208,8 @@
|
||||
"view_recorded": "Recorded image",
|
||||
"view_mode_tip": "Image display mode while running",
|
||||
"replay_pipeline": "Recorded video (raw camera image)",
|
||||
"replay_pipeline_tip": "Replay shows the recorded raw camera image with no live arrow overlay; to check the algorithm, use View → Recompute forces from the video",
|
||||
"replay_raw_note": "A recording stores only the raw camera image: there is no flow or depth to draw, because this recording has no analysis result yet. Opening a recording runs the pass automatically, or press “Recompute from the video”; once a result exists this pane can draw arrows and the depth map",
|
||||
"replay_pipeline_tip": "Replay shows the recorded raw camera image with no live arrow overlay; to get arrows and depth from analysis, use View → Analyze video",
|
||||
"replay_raw_note": "A recording stores only the raw camera image: there is no flow or depth to draw, because this recording has no analysis result yet. Opening a recording runs the pass automatically, or press “Analyze video”; once a result exists this pane can draw arrows and the depth map",
|
||||
"frame_missing_note": "This frame carries no {fields}: there is nothing for this view to draw",
|
||||
"field_flow": "flow",
|
||||
"field_depth": "depth",
|
||||
@@ -227,12 +240,9 @@
|
||||
"mesh3d_unavailable_gl_reason": "3D is not available on this machine: {reason}\nMeasuring, recording and the charts work as usual.",
|
||||
"mesh3d_settings_tip": "3D display settings (view, housing, colour scale, frame rate)",
|
||||
"mesh3d_reset_tip": "Reset view: back to the framing the scene itself uses",
|
||||
"analysis_pipeline": "Analysis result (one finished pass)",
|
||||
"analysis_pipeline_tip": "This frame's arrows come from a stored analysis result rather than a chain running now; changing the threshold only changes which stored samples count as active.",
|
||||
"analysis_empty": "the analysis result holds no frame here",
|
||||
"replay_analysis_running": "this recording is being analysed: there are no arrows or depth to draw until it finishes. Progress and Cancel are on the analysis panel.",
|
||||
"replay_analysis_failed": "there is no analysis result to draw: {reason}. Only the raw camera image can be shown here; once that is dealt with, Recompute from the video runs the pass again by hand.",
|
||||
"replay_analysis_unavailable": "this is not a recording that can be analysed (its folder has no session.json, or no raw_*.mp4 segment): no pass can run, so this panel shows the raw camera image only. For forces and deformation from this video use View > Recompute forces from the video."
|
||||
"replay_analysis_failed": "there is no analysis result to draw: {reason}. Only the raw camera image can be shown here; once that is dealt with, Analyze video runs the pass again by hand.",
|
||||
"replay_analysis_unavailable": "this is not a recording that can be analysed (its folder has no session.json, or no raw_*.mp4 segment): no pass can run, so this panel shows the raw camera image only. For forces and deformation from this video use View > Analyze video."
|
||||
},
|
||||
"chart": {
|
||||
"fn": "FN",
|
||||
@@ -250,6 +260,12 @@
|
||||
"mode_browse_tip": "Display paused, capture and recording continue; drag or scroll to move the window, “back to latest” returns to live",
|
||||
"mode_replay": "Replaying a recording (browsing)",
|
||||
"mode_replay_tip": "The charts read the open recording; capture and recording continue",
|
||||
"mode_recomputed": "Recomputed from this video (browsing)",
|
||||
"mode_recomputed_tip": "The charts read the force the analysis pass recomputed from this video and stored in its result. This is not the recorded forces.csv — no device measured these numbers",
|
||||
"mode_no_trace": "No force trace — {reason}",
|
||||
"mode_no_trace_tip": "There is nothing to plot, and the reason is a fact about the input rather than a loading state",
|
||||
"trace_not_analysed": "this video has not been analysed yet",
|
||||
"trace_no_force": "this profile's chain produced no force for this video",
|
||||
"return_latest": "Back to latest",
|
||||
"return_latest_tip": "Leave history browsing and follow the newest data again",
|
||||
"overview": "Whole session",
|
||||
@@ -272,15 +288,14 @@
|
||||
"browse_only_tip": "Drag or scroll on the chart to browse history"
|
||||
},
|
||||
"playback": {
|
||||
"title": "Replay recording",
|
||||
"open": "Open a recorded video…",
|
||||
"video_filter": "Recorded video (*.mp4 *.avi *.mov *.mkv);;All files (*)",
|
||||
"no_video": "This recording has no usable video segment",
|
||||
"open_failed": "Could not open that recording: {error}",
|
||||
"not_a_recording": "“{name}” is not a recording: its folder has no forces.csv (a recording is the video plus forces.csv and session.json). Replay needs a recording; to just watch this video, use “Recompute forces from the video”.",
|
||||
"video_only_opened": "“{name}” has no recording beside it (no forces.csv), so it is playing as a video: the picture and the timeline work, the force charts are empty. For forces and deformation use View ▸ Recompute forces from the video.",
|
||||
"not_a_recording": "“{name}” is not a recording: its folder has no forces.csv (a recording is the video plus forces.csv and session.json). Replay needs a recording; to just watch this video, open it as a video or use View ▸ Analyze video.",
|
||||
"video_only_opened": "“{name}” has no recording beside it (no forces.csv), so it is playing as a video: the picture and the timeline work, the force charts are empty. For forces and deformation use View ▸ Analyze video.",
|
||||
"video_only_notice": "This video has no recording beside it (no forces.csv): it plays, but the force charts and the recording details are empty.",
|
||||
"video_only_panel": "This is not a recording, and this video cannot be decoded (no forces.csv beside it, and it does not read as playable video)\nYou can still try View ▸ Recompute forces from the video",
|
||||
"video_only_panel": "This is not a recording, and this video cannot be decoded (no forces.csv beside it, and it does not read as playable video)\nYou can still try View ▸ Analyze video",
|
||||
"empty_recording": "This recording has no playable picture (no raw_*.mp4 segment), so it cannot be replayed",
|
||||
"none_found": "No recording found under outputs/recordings",
|
||||
"frame_dropped": "This frame never reached the video (the record queue overflowed)",
|
||||
@@ -295,17 +310,28 @@
|
||||
"warn_out_of_order": "this recording was written by an older version: its rows are not in time order, so the replay re-sorts them and window edges may differ",
|
||||
"analysis_empty": "this analysis result holds no frame to show",
|
||||
"analysis_unreadable": "this frame cannot be read ({error})",
|
||||
"analysis_complete": "replaying from the analysis result: {frames} frames, cursor on signal time (the recording's own frames.csv)",
|
||||
"analysis_reused": "an analysis result was already stored and is being replayed: {frames} frames",
|
||||
"analysis_failed": "the analysis did not finish ({reason}): playback is not served. Re-run it, or turn 「从视频重算」 off to read the recorded forces.csv",
|
||||
"analysis_cancelled": "the analysis was cancelled: no complete result was written, so no playback is served",
|
||||
"analysis_no_source": "this recording has no video segment to analyse",
|
||||
"analysis_busy": "an analysis is already running: wait for it, or cancel it",
|
||||
"analysis_grid_mismatch": "the current display settings moved the sample grid ({keys}); the stored candidate locations cannot serve it, so the replay keeps drawing the result's own grid",
|
||||
"analysis_no_chain": "this recording does not say which sensor and configuration produced it ({error}), so no result can be read and no pass can be run"
|
||||
"analysis_no_chain": "this recording does not say which sensor and configuration produced it ({error}), so no result can be read and no pass can be run",
|
||||
"analysis_setup_declined": "no analysis was set up for this video: the setup prompt was dismissed, so there is nothing to draw from. Use View ▸ Analysis setup… or open the video again"
|
||||
},
|
||||
"video_analysis": {
|
||||
"title": "Analyse this video",
|
||||
"video": "{name} — {frames} frames at {fps} fps ({seconds} s). It has no recording beside it (no forces.csv, no frames.csv), so the pass will work from a frame index generated for it.",
|
||||
"profile": "Processing profile",
|
||||
"calibration": "Calibration",
|
||||
"calibration_default": "Profile default — {name}",
|
||||
"calibration_none": "No calibration — raw force",
|
||||
"calibration_file": "Chosen file — {name}",
|
||||
"calibration_browse": "Choose a file…",
|
||||
"calibration_filter": "Force calibration (*.json);;All files (*)",
|
||||
"reference": "Reference frame",
|
||||
"reference_time": "{seconds} s",
|
||||
"blocked": "This profile cannot be used: {reason}"
|
||||
},
|
||||
"record": {
|
||||
"label": "Record",
|
||||
"mode_video_data": "Video + data",
|
||||
"mode_data_only": "Data only",
|
||||
"mode_tip": "Video records the pre-processing camera input (no arrows or text overlays). MP4 is a lossy container, not a lossless copy of the raw data.",
|
||||
@@ -319,7 +345,6 @@
|
||||
"finished": "Recording finished — {frames} frames / {segments} segment(s) in {path}",
|
||||
"finished_with_problems": "Recording finished with problems: {detail}",
|
||||
"closing": "Closing the recording files…",
|
||||
"failed_state": "The recording failed (see the summary and the log)",
|
||||
"alarm": "Recording problem: {detail}",
|
||||
"state_idle": "No recording",
|
||||
"state_recording": "Recording {duration}",
|
||||
@@ -373,9 +398,6 @@
|
||||
"col_fy": "FY mean",
|
||||
"col_stability": "Stability",
|
||||
"col_state": "State",
|
||||
"col_raw": "Raw mean",
|
||||
"col_n": "n",
|
||||
"col_std": "σ",
|
||||
"state_ok": "OK",
|
||||
"state_excluded": "Excluded",
|
||||
"state_validation": "Validation",
|
||||
@@ -403,13 +425,11 @@
|
||||
"point_samples_value": "{valid} valid / {total} total",
|
||||
"point_axes": "Three-axis mean ± std",
|
||||
"point_residual": "Fit residual",
|
||||
"col_actions": "",
|
||||
"recording": "Recording calibration samples…",
|
||||
"recording_stop_tip": "Click to cancel this calibration recording (always available)",
|
||||
"record_ok": "Recorded weight={weight} raw={raw}",
|
||||
"record_failed_few": "Recording failed — too few samples",
|
||||
"export_ok": "Exported {path}",
|
||||
"export_local": "Also wrote {path}",
|
||||
"export_warnings": "Skipped: {detail}",
|
||||
"export_failed": "Export failed: {error}",
|
||||
"export_no_model": "Nothing to export: {detail}",
|
||||
@@ -484,7 +504,6 @@
|
||||
"contact_arrow_unavailable": "This scene package has no UV→scene surface mapping, so the contact arrow cannot be drawn.",
|
||||
"quantity_flow_magnitude": "Optical flow magnitude",
|
||||
"quantity_depth_response": "Depth response",
|
||||
"mode_surface": "surface colouring",
|
||||
"preset_default": "Default view",
|
||||
"legend_effective": "{quantity} [{unit}] · {mode} scale {lower} – {upper} · {quality}",
|
||||
"legend_auto": "automatic",
|
||||
@@ -515,9 +534,9 @@
|
||||
"source_live": "Live acquisition",
|
||||
"source_live_tip": "The picture comes from the data being acquired right now.",
|
||||
"source_replay": "Replay: the recording stores no 3D field",
|
||||
"source_replay_tip": "A recording stores the raw camera image and the forces, not a per-frame deformation field. Turn on “Recompute forces from the video” and this pane will show the deformation recomputed from the recording.",
|
||||
"source_recompute": "Recomputed from the recording — not the recorded values",
|
||||
"source_recompute_tip": "This is what the current algorithm version says about the recorded footage: it is a check on the algorithm, not the measurement that was recorded at the time.",
|
||||
"source_replay_tip": "A recording stores the raw camera image and the forces, not a per-frame deformation field. Turn on Analyze video and this pane will show the deformation from the analysis result.",
|
||||
"source_recompute": "From the analysis result — not the recorded values",
|
||||
"source_recompute_tip": "This is what the current algorithm version says about the footage in the stored analysis result: it is not the measurement that was recorded at the time.",
|
||||
"severity_info": "Note",
|
||||
"severity_warning": "Warning",
|
||||
"severity_error": "Error",
|
||||
@@ -527,21 +546,15 @@
|
||||
},
|
||||
"analysis": {
|
||||
"title": "Analysing the recording",
|
||||
"subtitle": "once only: scrubbing, playing and stepping afterwards are reads",
|
||||
"stage_open": "open chain",
|
||||
"stage_frames": "frame by frame",
|
||||
"stage_write": "write result",
|
||||
"frames": "{written} / {expected} frames",
|
||||
"segment": "segment {index} / {count}",
|
||||
"elapsed": "{seconds:.1f} s elapsed",
|
||||
"cancel": "Cancel",
|
||||
"cancelling": "Cancelling…",
|
||||
"cancel_tip": "Cancel this pass: the frames already written stay, but the result is marked incomplete and is never played back as if it were whole",
|
||||
"reused": "a stored result is already there — nothing to recompute",
|
||||
"complete": "analysis finished: {frames} frames in {seconds:.1f} s",
|
||||
"cancelled": "analysis cancelled ({frames} frames written; the result is marked incomplete)",
|
||||
"failed": "analysis failed: {reason}",
|
||||
"incomplete": "the result is incomplete: {reason}",
|
||||
"blocked": "a session is running: stop it before analysing"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,14 @@
|
||||
"app": {
|
||||
"title": "Orisys Studio",
|
||||
"about_title": "关于",
|
||||
"about_body": "Orisys Studio 桌面应用\n版本: {app_version}",
|
||||
"scaffold_hint": "脚手架界面 — 采集功能稍后加入"
|
||||
"about_body": "Orisys Studio 桌面应用\n版本: {app_version}"
|
||||
},
|
||||
"brand": {
|
||||
"name": "ORISYS",
|
||||
"tagline": "叠动科技",
|
||||
"nav_live": "实时监测",
|
||||
"nav_live": "实时",
|
||||
"nav_live_tip": "当前视图:实时监测。点击可退出历史浏览。",
|
||||
"nav_playback": "历史回放",
|
||||
"nav_playback": "回放",
|
||||
"nav_playback_tip": "打开一段录制:视频、曲线与同一游标",
|
||||
"nav_calibration": "标定",
|
||||
"nav_calibration_tip": "显示标定面板"
|
||||
@@ -18,7 +17,7 @@
|
||||
"menu": {
|
||||
"file": "文件",
|
||||
"open_video": "打开视频…",
|
||||
"reveal_config": "在资源管理器中显示配置…",
|
||||
"reveal_config": "显示传感器配置…",
|
||||
"playback": "打开录制回放…",
|
||||
"playback_latest": "回放最近一次录制",
|
||||
"view": "视图",
|
||||
@@ -33,15 +32,17 @@
|
||||
"scene3d_settings": "三维显示设置…",
|
||||
"show_fps": "显示 FPS",
|
||||
"show_diagnostics": "诊断信息",
|
||||
"raw_auto_zero": "Finger raw 启动归零",
|
||||
"raw_auto_zero": "启动时 raw 自动归零",
|
||||
"raw_auto_zero_tip": "仅影响数字卡展示:启动后自动估计无载偏置与死区。曲线、统计与 CSV 仍为测量值。",
|
||||
"raw_reestimate": "重新估计 raw 基线…",
|
||||
"raw_reestimate_tip": "丢弃当前展示基线,从接下来的无载样本重新估计(仅数字卡)。",
|
||||
"settings": "设置区",
|
||||
"plot_settings": "绘图设置…",
|
||||
"rotate_arrows": "旋转箭头图 90°",
|
||||
"recompute": "由视频重算力值",
|
||||
"recompute_tip": "关闭:曲线读录制的 forces.csv(当时测得的值)。打开:把录制的视频重新跑一遍视觉管线(算法复核,只能顺序前进)。",
|
||||
"recompute": "分析视频",
|
||||
"recompute_tip": "打开:有兼容的分析结果就直接用,没有就跑一遍分析。关闭:离开分析,有 forces.csv 时曲线读录制值。要改配置、标定或参考帧请用「视图 ▸ 分析设置…」。",
|
||||
"analysis_setup": "分析设置…",
|
||||
"analysis_setup_tip": "为这段视频选择配置、标定与参考帧,然后跑(或重跑)分析。",
|
||||
"run": "运行 / 停止",
|
||||
"stop": "取消采集",
|
||||
"preview": "预览 / 停止预览",
|
||||
@@ -70,13 +71,13 @@
|
||||
"plot_shear_raw_max": "原始剪切上限",
|
||||
"plot_shear_raw_max_tip": "未标定(原始)模式下的剪切力 FX/FY 纵轴 ±上限。0 = 自动量程",
|
||||
"plot_deadband_n": "归零阈值(N)",
|
||||
"plot_deadband_n_tip": "牛顿模式下的显示死区下限:读数在阈值内即显示为 0,曲线压平在零线上。0 = 自动(用启动静默窗口估计的噪声,牛顿模式无固定下限)。只影响显示,记录与 forces.csv 仍是实测值",
|
||||
"plot_deadband_n_tip": "牛顿模式下的显示死区下限:读数在阈值内即显示为 0,曲线压平在零线上。0 = 自动(用启动静默窗口估计的噪声,牛顿模式无固定下限)。只影响显示,记录与 forces.csv 仍保留测量值",
|
||||
"plot_deadband_raw": "归零阈值(原始)",
|
||||
"plot_deadband_raw_tip": "原始模式下的显示死区下限(原始计数)。0 = 自动(默认下限 50 计数)。标定数据可疑时可手动放大,只影响显示",
|
||||
"reset_defaults": "恢复默认",
|
||||
"plot_orientation_group": "手指 2D 显示方向(只影响 2D 画面;3D 视图仍用设计坐标系)",
|
||||
"plot_orientation": "方向",
|
||||
"plot_orientation_tip": "手指 2D 画布(展开域)的显示方向。默认 180° 是按展开图与设计坐标系推导出来的:画布的 +x 是设计系的 +X、屏幕向上是 −Z,与 3D 默认视图的 −X / +Z 正好都相反,所以要把画面转半圈,箭头左右才与 3D 一致。只影响显示,不改变记录与存储的数组",
|
||||
"plot_orientation_tip": "手指 2D 画布(展开域)的显示方向。默认 180° 是按展开图与设计坐标系推导出来的:画布的 +x 是设计系的 +X、屏幕向上是 −Z,与 3D 默认视图的 −X / +Z 正好都相反,因此需要旋转 180° 才能使箭头方向与 3D 视图一致。。只影响显示,不改变记录与存储的数组",
|
||||
"plot_orientation_note": "只影响 2D 手指画布的显示:存储的光流、有效掩膜与录制数据始终保持域本身的朝向。3D 视图不受影响(它的坐标系是设计导出坐标系)",
|
||||
"orientation_identity": "原始(不旋转)",
|
||||
"orientation_rotate180": "旋转 180°(默认)",
|
||||
@@ -91,7 +92,7 @@
|
||||
"filter_median": "中值窗口",
|
||||
"filter_median_tip": "力读数的滑动中值窗口(采样数)。1 = 关。去掉单点尖峰,代价是约半个窗口的延迟",
|
||||
"filter_lowpass": "低通截止",
|
||||
"filter_lowpass_tip": "力读数低通截止频率(Hz)。0 = 关。必须在奈奎斯特频率(帧率的一半)以下,否则设备不会滤",
|
||||
"filter_lowpass_tip": "力读数低通截止频率(Hz)。0 = 关。必须在奈奎斯特频率(帧率的一半)以下,否则设备不会进行滤波",
|
||||
"filter_order": "低通阶数",
|
||||
"filter_order_tip": "低通滤波器阶数(1–6)。越高越陡,相位失真也越大",
|
||||
"filter_rate": "采样率",
|
||||
@@ -101,7 +102,7 @@
|
||||
"filter_measurement_note": "光流 EMA 属于“测量”设置:改了它,本次录制与之前的不可比。",
|
||||
"filter_locked": "录制中不能更改滤波;下一次采集生效。",
|
||||
"filter_nyquist": "注意:低通 {cutoff} Hz 已达到或超过奈奎斯特频率 {nyquist} Hz(采样率 {rate} Hz)——设备不会滤。请调低截止频率或固定更高的采样率。",
|
||||
"filter_off": "当前不滤波(原始读数)",
|
||||
"filter_off": "未滤波(原始读数)",
|
||||
"ok": "确定",
|
||||
"cancel": "取消",
|
||||
"close": "关闭"
|
||||
@@ -113,8 +114,8 @@
|
||||
"use_camera_tip": "回到摄像机采集(当前的数据源是视频文件)",
|
||||
"choose_video": "选择录制视频…",
|
||||
"choose_video_tip": "打开一段录制的视频:2D 面板放视频,曲线读同目录的 forces.csv(原始记录值)",
|
||||
"recompute": "由视频重算…",
|
||||
"recompute_tip": "对这段录像重新跑一遍算法:2D 面板显示处理后的图像(录像本身只存了原始相机图像),曲线与三维也改用重算结果。可以随时「停止」。",
|
||||
"recompute": "分析视频…",
|
||||
"recompute_tip": "有兼容的分析结果就直接用,没有就跑一遍分析:2D 面板可画箭头与深度,曲线可读结果中的力。分析进行中可随时「停止」。要改配置、标定或参考帧请用「视图 ▸ 分析设置…」。",
|
||||
"replay_view_only": "请在「历史回放」视图里打开录像",
|
||||
"preview": "预览",
|
||||
"preview_stop": "停止预览",
|
||||
@@ -122,17 +123,18 @@
|
||||
"stop": "停止",
|
||||
"run_label": "▶ 运行",
|
||||
"stop_label": "■ 停止",
|
||||
"cancel_label": "■ 取消连接",
|
||||
"cancel_label": "■ 断开",
|
||||
"cancel_tip": "中断连接(连接卡住时随时可用,快捷键 Esc)",
|
||||
"run_unavailable": "当前不可运行",
|
||||
"run_disabled_video": "请先选择一个视频文件",
|
||||
"run_video_in_replay": "请在「历史回放」视图里播放视频(用播放与曲线游标)",
|
||||
"run_disabled_sensor": "此传感器类型暂不支持运行",
|
||||
"playback": "▶ 播放",
|
||||
"playback_pause": "⏸ 暂停",
|
||||
"playback_tip": "按 1× 播放这段录制(空格键同效);拖动游标即暂停",
|
||||
"playback_pause_tip": "暂停播放(拖动游标、框选或滚轮也会暂停)",
|
||||
"playback_disabled": "先打开一段录制视频(左上「选择录制视频…」)",
|
||||
"playback_needs_recording": "这段视频旁边没有记录(缺 forces.csv):回放需要一条记录;只想看视频请用 视图 ▸ 从视频重算力值",
|
||||
"playback_needs_recording": "这段视频旁边没有记录(缺 forces.csv):回放需要一条记录;只想看视频请直接打开视频,或用 视图 ▸ 分析视频",
|
||||
"playback_video_only": "播放这段视频(没有配套记录:可以看画面,力曲线为空)",
|
||||
"reset_sensor": "重置传感器",
|
||||
"reset_sensor_tip": "把传感器追踪器归零(清零),这是设备自己的零点。归零同时会重新估计显示基线:曲线与数字卡按之后的静默样本重新学习零点;曲线历史保留 —— 要清空视图请用「视图 → 复位视图」(F8)。",
|
||||
@@ -140,13 +142,12 @@
|
||||
"reset_display": "复位显示",
|
||||
"reset_display_tip": "清空累积的显示:曲线、游标与数字卡恢复默认,回放回到录像开头。本视图没有设备会话,不会改动设备;三维视角请用「视图 → 复位视图」(F8)。",
|
||||
"pause": "⏸ 暂停",
|
||||
"pause_resume": "▶",
|
||||
"pause_tip": "暂停计算与显示(F7):不再做光流/深度/接触计算,画面停在最后一帧,设备保持连接,随时可继续。跨过暂停的记录会有一段空档。",
|
||||
"resume_tip": "继续计算与显示(F7),从最新一帧接着跑。",
|
||||
"resume_label": "▶ 继续",
|
||||
"resume_label_tip": "继续计算与显示(F7):从最新一帧接着跑,设备保持连接。",
|
||||
"stop_playback": "停止",
|
||||
"stop_playback_tip": "停止回放:无论是普通播放还是「从视频重算」通道,都在这里停下(Esc 同效)。",
|
||||
"stop_playback_tip": "停止回放:无论是普通播放还是「分析视频」通道,都在这里停下(Esc 同效)。",
|
||||
"stopped": "已停止:{what}",
|
||||
"stopped_playback": "回放",
|
||||
"stopped_pass": "重算通道",
|
||||
@@ -155,8 +156,7 @@
|
||||
"units_newton": "牛顿",
|
||||
"units_raw": "原始",
|
||||
"settings": "设置",
|
||||
"settings_tip": "展开或收起单位、记录模式与预览",
|
||||
"stopped_analysis": "分析"
|
||||
"settings_tip": "展开或收起单位、记录模式与预览"
|
||||
},
|
||||
"units": {
|
||||
"newton_short": "N",
|
||||
@@ -181,11 +181,24 @@
|
||||
"export_identity": "文件身份 类型 {sensor_type} · SN {sn} · 配置 {config}",
|
||||
"thumb_placeholder": "产品型号",
|
||||
"family_unidentified": "未识别",
|
||||
"catalog_profile": "配置档案 {profile_id} · {shape} · 来源 {origin} · SDK 校验:{state}",
|
||||
"catalog_name": "名称 {name} · 文件夹 {folder}",
|
||||
"catalog_profile": "配置档案 {profile_id} · {shape} · 来源 {origin}",
|
||||
"catalog_root": "根目录({origin}):{path}",
|
||||
"catalog_state": "SDK 校验:{state}({note})",
|
||||
"catalog_state_ok": "可以开始处理",
|
||||
"catalog_state_degraded": "可以开始处理;有可选项缺失",
|
||||
"catalog_state_failed": "无法开始处理",
|
||||
"catalog_state_invalid": "此目录没有可读取的配置包",
|
||||
"catalog_state_unknown": "无法识别的校验结果",
|
||||
"catalog_calibration_selected": "已选择标定:{name}",
|
||||
"catalog_calibration_none": "未选择标定——使用原始力",
|
||||
"catalog_duplicate": "同时由 {refs} 提供",
|
||||
"catalog_shape_descriptor": "描述符配置包",
|
||||
"catalog_shape_compatibility": "兼容配置包(无描述符)",
|
||||
"catalog_shape_unreadable": "没有可读取的配置包",
|
||||
"catalog_blocked": "无法启动:{reason}"
|
||||
"catalog_blocked": "无法启动:{reason}",
|
||||
"catalog_warning": "警告:{sentence}",
|
||||
"catalog_error": "错误:{sentence}"
|
||||
},
|
||||
"panels": {
|
||||
"arrow": "2D 图像",
|
||||
@@ -195,8 +208,8 @@
|
||||
"view_recorded": "原始图像",
|
||||
"view_mode_tip": "运行时的图像显示模式",
|
||||
"replay_pipeline": "录制视频(原始相机图像)",
|
||||
"replay_pipeline_tip": "回放显示的是录制下来的原始相机图像,不含实时箭头叠加;要复核算法请用「视图 → 由视频重算力值」",
|
||||
"replay_raw_note": "录像只保存原始相机图像:这里没有光流/深度可画,因为这个录像还没有分析结果。打开录像会自动跑一遍分析,也可以点「由视频重算」手动生成;有结果后本面板就能画箭头和深度图",
|
||||
"replay_pipeline_tip": "回放显示的是录制下来的原始相机图像,不含实时箭头叠加;要看分析得到的箭头与深度请用「视图 → 分析视频」",
|
||||
"replay_raw_note": "录像只保存原始相机图像:这里没有光流/深度可画,因为这个录像还没有分析结果。打开录像会自动跑一遍分析,也可以点「分析视频」手动生成;有结果后本面板就能画箭头和深度图",
|
||||
"frame_missing_note": "本帧没有{fields}:这个视图这一帧没有数据可画",
|
||||
"field_flow": "光流",
|
||||
"field_depth": "深度",
|
||||
@@ -207,7 +220,7 @@
|
||||
"arrow_empty_tip": "运行或预览后在此显示形变箭头图",
|
||||
"depth_unavailable": "本帧没有深度数据\n(不是深度为零,也未回退显示普通形变图)",
|
||||
"depth_scale": "深度色标 {low} – {high}",
|
||||
"depth_empty": "本帧深度全为 0({pixels} px 中 0 个非零):色标低端色是一帧真实的零响应,不是缺数据",
|
||||
"depth_empty": "本帧深度全为 0({pixels} px 中 0 个非零):色标最低颜色是真实的零响应,不是缺数据",
|
||||
"arrow_scale": "箭头按位移放大 ×{factor}",
|
||||
"arrow_scale_tip": "相对位移的显示放大倍率:箭头由原始采集图像经算法输出,长度按测量位移放大后绘制,上限为网格间距的 0.8 倍;触顶的箭头不再呈现真实倍率。",
|
||||
"arrow_pipeline": "原始图像 → 算法输出",
|
||||
@@ -227,12 +240,9 @@
|
||||
"mesh3d_unavailable_gl_reason": "本机无法使用三维显示:{reason}\n采集、记录与力曲线照常工作。",
|
||||
"mesh3d_settings_tip": "三维显示设置(视角、外壳、色标、显示频率)",
|
||||
"mesh3d_reset_tip": "复位视角:回到场景自带的取景",
|
||||
"analysis_pipeline": "分析结果(已跑完的一遍)",
|
||||
"analysis_pipeline_tip": "这一帧的箭头来自存下来的分析结果,不是此刻在跑的链路;换阈值只改变哪些样本算「有效」,不会重算。",
|
||||
"analysis_empty": "分析结果里没有这一帧",
|
||||
"replay_analysis_running": "正在分析这个录像:跑完之前这里没有箭头/深度可画,进度与取消在分析面板上。",
|
||||
"replay_analysis_failed": "没有可画的分析结果:{reason}。这里只能显示原始相机图像;处理完之后可以点「由视频重算」再跑一遍。",
|
||||
"replay_analysis_unavailable": "这不是一条可分析的录像(同目录没有 session.json,或没有 raw_*.mp4 分段):没有能跑的分析,本面板只能显示原始相机图像。要从这段视频得到力值/形变,请用 视图 ▸ 从视频重算力值。"
|
||||
"replay_analysis_failed": "没有可画的分析结果:{reason}。这里只能显示原始相机图像;处理完之后可以点「分析视频」再跑一遍。",
|
||||
"replay_analysis_unavailable": "这不是一条可分析的录像(同目录没有 session.json,或没有 raw_*.mp4 分段):没有能跑的分析,本面板只能显示原始相机图像。要从这段视频得到力值/形变,请用 视图 ▸ 分析视频。"
|
||||
},
|
||||
"chart": {
|
||||
"fn": "FN",
|
||||
@@ -250,6 +260,12 @@
|
||||
"mode_browse_tip": "显示暂停,采集与记录继续;拖动或滚轮改变窗口,点「返回最新」回到实时",
|
||||
"mode_replay": "回放录制(浏览)",
|
||||
"mode_replay_tip": "曲线读的是打开的录制;回放期间采集与记录继续",
|
||||
"mode_recomputed": "从这段视频重算(浏览)",
|
||||
"mode_recomputed_tip": "曲线读的是分析过程从这段视频重算、并存入结果的力。这不是记录的 forces.csv——没有任何设备测过这些数字",
|
||||
"mode_no_trace": "没有力曲线 — {reason}",
|
||||
"mode_no_trace_tip": "没有可画的东西,而原因是输入本身的事实,不是一种加载状态",
|
||||
"trace_not_analysed": "这段视频还没有分析过",
|
||||
"trace_no_force": "这套配置的链路对这段视频没有产生力",
|
||||
"return_latest": "返回最新",
|
||||
"return_latest_tip": "退出历史浏览,恢复跟随最新数据",
|
||||
"overview": "全程总览",
|
||||
@@ -260,11 +276,11 @@
|
||||
"settings_tip": "时间窗口、纵轴量程,以及采集端滤波(界面与记录用同一份数据)",
|
||||
"selection": "选区 {duration}s / {samples} 点 — {detail}",
|
||||
"selection_summary": "选区 {duration}s / {samples} 点",
|
||||
"selection_detail": "均 {mean} · σ {std}",
|
||||
"selection_detail": "均值 {mean} · σ {std}",
|
||||
"selection_peak_tip": "上方大号数字是选区的峰值;均值为选区均值",
|
||||
"selection_empty": "选区无有效样本",
|
||||
"value_unavailable": "不可用",
|
||||
"value_unavailable_tip": "{channel} 轴未加载标定曲线,因此没有该单位的数值(不会用原始值冒充)",
|
||||
"value_unavailable_tip": "{channel} 轴未加载标定曲线,因此没有该单位的数值(不会以原始值替代)",
|
||||
"zero_zone": "零区",
|
||||
"zero_zone_tip": "展示归零后的死区内读数;曲线、统计与 CSV 仍为原始测量值",
|
||||
"unit_toggle": "切换单位",
|
||||
@@ -272,40 +288,50 @@
|
||||
"browse_only_tip": "拖动或滚轮即可进入历史浏览"
|
||||
},
|
||||
"playback": {
|
||||
"title": "录制回放",
|
||||
"open": "打开录制视频…",
|
||||
"video_filter": "录制的视频 (*.mp4 *.avi *.mov *.mkv);;所有文件 (*)",
|
||||
"no_video": "这段录制没有可用的视频分段",
|
||||
"open_failed": "无法打开该录制: {error}",
|
||||
"not_a_recording": "「{name}」不是一条记录:同目录没有 forces.csv(一条记录 = 录像 + forces.csv + session.json)。回放需要记录;只想看这段视频请用「从视频重算力值」。",
|
||||
"video_only_opened": "「{name}」没有配套记录(无 forces.csv),已按视频播放:可以看画面与拖时间轴,力曲线为空。要得助力值/形变请用 视图 ▸ 从视频重算力值。",
|
||||
"not_a_recording": "「{name}」不是一条记录:同目录没有 forces.csv(一条记录 = 录像 + forces.csv + session.json)。回放需要记录;只想看这段视频请直接打开视频,或用「分析视频」。",
|
||||
"video_only_opened": "「{name}」没有配套记录(无 forces.csv),已按视频播放:可以看画面与拖时间轴,力曲线为空。要得到力值/形变,请使用 视图 ▸ 分析视频。",
|
||||
"video_only_notice": "这段视频没有配套记录(同目录无 forces.csv):可以播放,但力曲线与记录信息为空。",
|
||||
"video_only_panel": "这不是一条记录,而且无法解码这段视频(没有 forces.csv,也不像可播放的视频文件)\n可以试试 视图 ▸ 从视频重算力值",
|
||||
"video_only_panel": "这不是一条记录,而且无法解码这段视频(没有 forces.csv,也不像可播放的视频文件)\n可以试试 视图 ▸ 分析视频",
|
||||
"empty_recording": "这条记录没有可播放的画面(没有 raw_*.mp4 视频分段),因此无法回放",
|
||||
"none_found": "outputs/recordings 下没有找到录制",
|
||||
"frame_dropped": "该帧未被写入视频(记录队列曾溢出)",
|
||||
"frame_unreadable": "该帧无法从视频中解码",
|
||||
"warnings": "回放提示: {detail}",
|
||||
"decimated": "该录制较长,曲线为降采样视图(显示 {shown} / 共 {total} 行;区间数据按需从磁盘读取)",
|
||||
"warn_config_changed": "配置文件与录制时不一致:由视频重算的结果可能与当时不同",
|
||||
"warn_sdk_changed": "SDK 版本与录制时不一致:由视频重算的结果可能不同",
|
||||
"warn_config_changed": "配置文件与录制时不一致:分析结果可能与当时不同",
|
||||
"warn_sdk_changed": "SDK 版本与录制时不一致:分析结果可能不同",
|
||||
"warn_config_missing": "找不到配置哈希,无法校验重算一致性",
|
||||
"warn_rows_skipped": "有无法解析的 CSV 行被跳过",
|
||||
"warn_frames_dropped": "有帧在队列溢出时丢失,仅保留索引记录(回放显示为“该帧未录制”)",
|
||||
"warn_out_of_order": "该录制由旧版本写入,行序不是时间序;回放已按时间重排,区间边界可能与当时不同",
|
||||
"analysis_empty": "这个分析结果里没有可显示的帧",
|
||||
"analysis_unreadable": "这一帧读不出来({error})",
|
||||
"analysis_complete": "已用分析结果回放:{frames} 帧,游标按信号时间(录制自己的 frames.csv)",
|
||||
"analysis_reused": "找到了现成的分析结果,直接回放:{frames} 帧",
|
||||
"analysis_failed": "分析未完成({reason}):不提供回放。可以重新分析,或关闭「从视频重算」看录制的 forces.csv",
|
||||
"analysis_cancelled": "分析已取消:未写出完整结果,因此不提供回放",
|
||||
"analysis_no_source": "这段录制没有可用于分析的视频分段",
|
||||
"analysis_busy": "分析进行中:先等待或取消当前这一遍",
|
||||
"analysis_grid_mismatch": "当前显示设置改了采样网格({keys}),存下来的候选位置无法服务它:回放仍按结果自己的网格绘制",
|
||||
"analysis_no_chain": "这条录像没有说明用哪套传感器与配置录下来({error}),所以既读不出结果也重算不了"
|
||||
"analysis_no_chain": "这条录像没有说明用哪套传感器与配置录下来({error}),因此既无法读取结果,也无法重算",
|
||||
"analysis_setup_declined": "这段视频没有建立分析:设置提示被关掉了,因此没有可画的东西。用「视图 ▸ 分析设置…」或重新打开视频即可分析"
|
||||
},
|
||||
"video_analysis": {
|
||||
"title": "分析这段视频",
|
||||
"video": "{name} — {frames} 帧 @ {fps} fps({seconds} 秒)。它旁边没有录制(没有 forces.csv、没有 frames.csv),因此这一遍会按为它生成的帧索引来跑。",
|
||||
"profile": "处理配置",
|
||||
"calibration": "标定",
|
||||
"calibration_default": "配置默认 — {name}",
|
||||
"calibration_none": "不标定 — 原始力",
|
||||
"calibration_file": "已选文件 — {name}",
|
||||
"calibration_browse": "选择文件…",
|
||||
"calibration_filter": "力标定 (*.json);;所有文件 (*)",
|
||||
"reference": "参考帧",
|
||||
"reference_time": "{seconds} 秒",
|
||||
"blocked": "这套配置不能用:{reason}"
|
||||
},
|
||||
"record": {
|
||||
"label": "记录",
|
||||
"mode_video_data": "视频 + 数据",
|
||||
"mode_data_only": "仅数据",
|
||||
"mode_tip": "视频记录的是处理前的相机输入图像(不含箭头与文字叠加)。MP4 是有损封装,不等于无损原始数据。",
|
||||
@@ -319,7 +345,6 @@
|
||||
"finished": "记录完成 — {frames} 帧 / {segments} 段,已写入 {path}",
|
||||
"finished_with_problems": "记录完成,但存在问题: {detail}",
|
||||
"closing": "正在关闭记录文件…",
|
||||
"failed_state": "记录已失败(详见摘要与日志)",
|
||||
"alarm": "记录异常: {detail}",
|
||||
"state_idle": "尚未记录",
|
||||
"state_recording": "记录中 {duration}",
|
||||
@@ -373,9 +398,6 @@
|
||||
"col_fy": "FY 均值",
|
||||
"col_stability": "稳定性",
|
||||
"col_state": "状态",
|
||||
"col_raw": "原始均值",
|
||||
"col_n": "n",
|
||||
"col_std": "σ",
|
||||
"state_ok": "正常",
|
||||
"state_excluded": "已排除",
|
||||
"state_validation": "验证点",
|
||||
@@ -403,13 +425,11 @@
|
||||
"point_samples_value": "有效 {valid} / 共 {total}",
|
||||
"point_axes": "三轴均值 ± 标准差",
|
||||
"point_residual": "拟合残差",
|
||||
"col_actions": "",
|
||||
"recording": "正在采集标定样本…",
|
||||
"recording_stop_tip": "点击可取消本次标定采集(随时可用)",
|
||||
"record_ok": "已记录 weight={weight} raw={raw}",
|
||||
"record_failed_few": "采集失败 — 样本过少",
|
||||
"export_ok": "已导出 {path}",
|
||||
"export_local": "同时写入 {path}",
|
||||
"export_warnings": "跳过: {detail}",
|
||||
"export_failed": "导出失败: {error}",
|
||||
"export_no_model": "没有可导出的模型: {detail}",
|
||||
@@ -427,7 +447,7 @@
|
||||
"phase_connecting": "连接中",
|
||||
"phase_running": "采集中",
|
||||
"phase_error": "出错",
|
||||
"rail_video_name": "视频文件: {name}",
|
||||
"rail_video_name": "视频文件: {name}",
|
||||
"data_valid": "数据有效",
|
||||
"data_invalid": "无效样本 {count}",
|
||||
"calibrated": "已标定",
|
||||
@@ -449,7 +469,7 @@
|
||||
"run_failed": "启动失败: {error}",
|
||||
"filters_saved": "滤波设置已保存:{describe}(下次采集生效)",
|
||||
"rail_camera_fps": "摄像头 {fps}",
|
||||
"capture_slow": "摄像头交付的帧率低于配置值:{detail}。记录会按实际帧率保存。这是采集端(摄像头/驱动)的问题,软件改不了:换一颗真能交付 30 fps 的摄像头,或先确认线材/端口没有把它降速,然后再测。",
|
||||
"capture_slow": "摄像头交付的帧率低于配置值:{detail}。记录会按实际帧率保存。这是采集端(摄像头/驱动)的问题,软件改不了:换一个真正能达到 30 fps 的摄像头,或先确认线材/端口没有把它降速,然后再测。",
|
||||
"video_ended": "视频已结束",
|
||||
"camera_disconnected": "摄像机已断开",
|
||||
"reset_ok": "传感器追踪器已重置(显示基线重新估计)",
|
||||
@@ -484,7 +504,6 @@
|
||||
"contact_arrow_unavailable": "当前场景包没有 UV→三维 表面映射,无法绘制接触法向箭头。",
|
||||
"quantity_flow_magnitude": "光流幅值",
|
||||
"quantity_depth_response": "深度响应",
|
||||
"mode_surface": "曲面着色",
|
||||
"preset_default": "默认视角",
|
||||
"legend_effective": "{quantity} [{unit}] · {mode}色标 {lower} – {upper} · {quality}",
|
||||
"legend_auto": "自动",
|
||||
@@ -514,10 +533,10 @@
|
||||
"state_unavailable": "三维不可用",
|
||||
"source_live": "实时采集",
|
||||
"source_live_tip": "画面来自此刻正在采集的数据。",
|
||||
"source_replay": "回放:录像不含三维场",
|
||||
"source_replay_tip": "录像只保存原始相机图像与力值,没有逐帧的形变场。开启「从视频重算力值」后,本面板会由录像重算并把形变显示在这里。",
|
||||
"source_recompute": "重算通道:由录像重算,非记录值",
|
||||
"source_recompute_tip": "这是在当前算法版本下对录像重算得到的形变,用于检查算法;它不是当初记录下来的测量值。",
|
||||
"source_replay": "回放:录像不包含三维场",
|
||||
"source_replay_tip": "录像只保存原始相机图像与力值,没有逐帧的形变场。开启「分析视频」后,本面板会显示分析结果中的形变。",
|
||||
"source_recompute": "分析结果:非录制时的测量值",
|
||||
"source_recompute_tip": "这是存下来的分析结果里当前算法对这段视频算出的形变;它不是当初记录下来的测量值。",
|
||||
"severity_info": "提示",
|
||||
"severity_warning": "警告",
|
||||
"severity_error": "错误",
|
||||
@@ -527,21 +546,15 @@
|
||||
},
|
||||
"analysis": {
|
||||
"title": "正在分析录像",
|
||||
"subtitle": "只跑一遍:之后拖动时间轴、播放与单步都只是读结果",
|
||||
"stage_open": "打开链路",
|
||||
"stage_frames": "逐帧分析",
|
||||
"stage_write": "写入结果",
|
||||
"frames": "{written} / {expected} 帧",
|
||||
"segment": "分段 {index} / {count}",
|
||||
"elapsed": "已用 {seconds:.1f} s",
|
||||
"cancel": "取消",
|
||||
"cancelling": "正在取消…",
|
||||
"cancel_tip": "取消这一遍:已完成的帧会留下,但结果会被标记为未完成,永远不会被当作有效结果回放",
|
||||
"reused": "已有结果,无需重算",
|
||||
"cancel_tip": "取消这一遍:已完成的帧会留下,但结果会被标记为未完成,永远不会被当作完整结果回放",
|
||||
"complete": "分析完成:{frames} 帧,用时 {seconds:.1f} s",
|
||||
"cancelled": "分析已取消({frames} 帧已写完,结果标记为未完成)",
|
||||
"failed": "分析失败:{reason}",
|
||||
"incomplete": "结果未完成:{reason}",
|
||||
"blocked": "正在采集:停止后再分析"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user