相机操作相关语言资源合并至Common

This commit is contained in:
李伟
2026-05-11 10:11:13 +08:00
parent 9be110607b
commit d89c8c4f44
7 changed files with 4482 additions and 2550 deletions
@@ -1,8 +1,94 @@
using XP.Camera.Calibration.Resources; using System.ComponentModel;
using System.Globalization;
using System.Resources;
using System.Runtime.CompilerServices;
namespace XP.Camera.Calibration; namespace XP.Camera.Calibration;
public class CalibrationLocalizedStrings /// <summary>
/// 本地化字符串包装类
/// 使用 XP.Common.Resources.Resources 获取本地化字符串
/// </summary>
public class CalibrationLocalizedStrings : INotifyPropertyChanged
{ {
public CalibrationResources Resources { get; } = new CalibrationResources(); private static readonly ResourceManager _resourceManager = new(
"XP.Common.Resources.Resources",
typeof(XP.Common.Resources.Resources).Assembly);
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private string GetString(string key)
{
return _resourceManager.GetString(key, CultureInfo.CurrentUICulture) ?? key;
}
// 九点标定
public string CalibrationToolTitle => GetString("CalibrationToolTitle");
public string CalibrationLoadImage => GetString("CalibrationLoadImage");
public string CalibrationLoadCsv => GetString("CalibrationLoadCsv");
public string CalibrationExecute => GetString("CalibrationExecute");
public string CalibrationSave => GetString("CalibrationSave");
public string CalibrationLoad => GetString("CalibrationLoad");
public string CalibrationShowWorld => GetString("CalibrationShowWorld");
public string CalibrationPointList => GetString("CalibrationPointList");
public string CalibrationPixelX => GetString("CalibrationPixelX");
public string CalibrationPixelY => GetString("CalibrationPixelY");
public string CalibrationWorldX => GetString("CalibrationWorldX");
public string CalibrationWorldY => GetString("CalibrationWorldY");
public string CalibrationStatusReady => GetString("CalibrationStatusReady");
public string CalibrationStatusImageLoaded => GetString("CalibrationStatusImageLoaded");
public string CalibrationStatusCsvLoaded => GetString("CalibrationStatusCsvLoaded");
public string CalibrationStatusSuccess => GetString("CalibrationStatusSuccess");
public string CalibrationStatusFailed => GetString("CalibrationStatusFailed");
public string CalibrationStatusSaved => GetString("CalibrationStatusSaved");
public string CalibrationStatusLoaded => GetString("CalibrationStatusLoaded");
public string CalibrationCoordinates => GetString("CalibrationCoordinates");
public string CalibrationErrorMinPoints => GetString("CalibrationErrorMinPoints");
public string CalibrationSuccessTitle => GetString("CalibrationSuccessTitle");
public string CalibrationSuccessMessage => GetString("CalibrationSuccessMessage");
public string CalibrationSaveSuccess => GetString("CalibrationSaveSuccess");
public string CalibrationLoadSuccess => GetString("CalibrationLoadSuccess");
public string CalibrationLoadFailed => GetString("CalibrationLoadFailed");
// 棋盘格标定
public string ChessboardToolTitle => GetString("ChessboardToolTitle");
public string ChessboardAddImages => GetString("ChessboardAddImages");
public string ChessboardClearImages => GetString("ChessboardClearImages");
public string ChessboardCalibrate => GetString("ChessboardCalibrate");
public string ChessboardSave => GetString("ChessboardSave");
public string ChessboardLoad => GetString("ChessboardLoad");
public string ChessboardUndistort => GetString("ChessboardUndistort");
public string ChessboardParameters => GetString("ChessboardParameters");
public string ChessboardWidth => GetString("ChessboardWidth");
public string ChessboardHeight => GetString("ChessboardHeight");
public string ChessboardSquareSize => GetString("ChessboardSquareSize");
public string ChessboardImageList => GetString("ChessboardImageList");
public string ChessboardStatusInfo => GetString("ChessboardStatusInfo");
public string ChessboardStatusReady => GetString("ChessboardStatusReady");
public string ChessboardStatusAdded => GetString("ChessboardStatusAdded");
public string ChessboardStatusCleared => GetString("ChessboardStatusCleared");
public string ChessboardStatusCalibrating => GetString("ChessboardStatusCalibrating");
public string ChessboardStatusSuccess => GetString("ChessboardStatusSuccess");
public string ChessboardStatusFailed => GetString("ChessboardStatusFailed");
public string ChessboardStatusSaved => GetString("ChessboardStatusSaved");
public string ChessboardStatusLoaded => GetString("ChessboardStatusLoaded");
public string ChessboardStatusUndistorted => GetString("ChessboardStatusUndistorted");
public string ChessboardStatusImageError => GetString("ChessboardStatusImageError");
public string ChessboardProgressPreparing => GetString("ChessboardProgressPreparing");
public string ChessboardProgressDetecting => GetString("ChessboardProgressDetecting");
public string ChessboardProgressCalibrating => GetString("ChessboardProgressCalibrating");
public string ChessboardProgressCalculating => GetString("ChessboardProgressCalculating");
public string ChessboardProgressComplete => GetString("ChessboardProgressComplete");
public string ChessboardProgressFailed => GetString("ChessboardProgressFailed");
public string ChessboardErrorMinImages => GetString("ChessboardErrorMinImages");
public string ChessboardErrorInsufficientValid => GetString("ChessboardErrorInsufficientValid");
public string ChessboardSaveSuccess => GetString("ChessboardSaveSuccess");
public string ChessboardLoadSuccess => GetString("ChessboardLoadSuccess");
public string ChessboardCalibrationComplete => GetString("ChessboardCalibrationComplete");
public string ChessboardImageError => GetString("ChessboardImageError");
} }
+43
View File
@@ -0,0 +1,43 @@
using System.Globalization;
using System.Resources;
namespace XP.Camera;
/// <summary>
/// 本地化辅助类
/// 使用 XP.Common 的资源文件
/// </summary>
public static class LocalizationHelper
{
private static ResourceManager? _resourceManager;
private static ResourceManager ResourceManager
{
get
{
if (_resourceManager == null)
{
_resourceManager = new ResourceManager(
"XP.Common.Resources.Resources",
typeof(XP.Common.Resources.Resources).Assembly);
}
return _resourceManager;
}
}
/// <summary>
/// 获取本地化字符串
/// </summary>
public static string GetString(string key)
{
try
{
var value = ResourceManager.GetString(key, CultureInfo.CurrentUICulture);
return value ?? key;
}
catch
{
return key;
}
}
}
+3308 -2400
View File
File diff suppressed because it is too large Load Diff
+258 -93
View File
@@ -375,7 +375,6 @@
<value>Printer not found: {0}</value> <value>Printer not found: {0}</value>
<comment>PdfViewer - Printer not found</comment> <comment>PdfViewer - Printer not found</comment>
</data> </data>
<!-- ContrastProcessor -->
<data name="ContrastProcessor_Name" xml:space="preserve"> <data name="ContrastProcessor_Name" xml:space="preserve">
<value>Contrast Adjustment</value> <value>Contrast Adjustment</value>
</data> </data>
@@ -412,8 +411,6 @@
<data name="ContrastProcessor_ClipLimit_Desc" xml:space="preserve"> <data name="ContrastProcessor_ClipLimit_Desc" xml:space="preserve">
<value>CLAHE contrast limit threshold</value> <value>CLAHE contrast limit threshold</value>
</data> </data>
<!-- BandPassFilterProcessor -->
<data name="BandPassFilterProcessor_Name" xml:space="preserve"> <data name="BandPassFilterProcessor_Name" xml:space="preserve">
<value>Band Pass Filter</value> <value>Band Pass Filter</value>
</data> </data>
@@ -444,8 +441,6 @@
<data name="BandPassFilterProcessor_Order_Desc" xml:space="preserve"> <data name="BandPassFilterProcessor_Order_Desc" xml:space="preserve">
<value>Order of Butterworth filter</value> <value>Order of Butterworth filter</value>
</data> </data>
<!-- ContourProcessor -->
<data name="ContourProcessor_Name" xml:space="preserve"> <data name="ContourProcessor_Name" xml:space="preserve">
<value>Contour Detection</value> <value>Contour Detection</value>
</data> </data>
@@ -494,8 +489,6 @@
<data name="ContourProcessor_Thickness_Desc" xml:space="preserve"> <data name="ContourProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of contour lines</value> <value>Thickness of contour lines</value>
</data> </data>
<!-- DivisionProcessor -->
<data name="DivisionProcessor_Name" xml:space="preserve"> <data name="DivisionProcessor_Name" xml:space="preserve">
<value>Division Operation</value> <value>Division Operation</value>
</data> </data>
@@ -520,8 +513,6 @@
<data name="DivisionProcessor_Normalize_Desc" xml:space="preserve"> <data name="DivisionProcessor_Normalize_Desc" xml:space="preserve">
<value>Normalize result to 0-255 range</value> <value>Normalize result to 0-255 range</value>
</data> </data>
<!-- GammaProcessor -->
<data name="GammaProcessor_Name" xml:space="preserve"> <data name="GammaProcessor_Name" xml:space="preserve">
<value>Gamma Correction</value> <value>Gamma Correction</value>
</data> </data>
@@ -540,8 +531,6 @@
<data name="GammaProcessor_Gain_Desc" xml:space="preserve"> <data name="GammaProcessor_Gain_Desc" xml:space="preserve">
<value>Output gain coefficient</value> <value>Output gain coefficient</value>
</data> </data>
<!-- GaussianBlurProcessor -->
<data name="GaussianBlurProcessor_Name" xml:space="preserve"> <data name="GaussianBlurProcessor_Name" xml:space="preserve">
<value>Gaussian Blur</value> <value>Gaussian Blur</value>
</data> </data>
@@ -560,8 +549,6 @@
<data name="GaussianBlurProcessor_Sigma_Desc" xml:space="preserve"> <data name="GaussianBlurProcessor_Sigma_Desc" xml:space="preserve">
<value>Standard deviation of Gaussian kernel, controls blur amount</value> <value>Standard deviation of Gaussian kernel, controls blur amount</value>
</data> </data>
<!-- MorphologyProcessor -->
<data name="MorphologyProcessor_Name" xml:space="preserve"> <data name="MorphologyProcessor_Name" xml:space="preserve">
<value>Morphology Processing</value> <value>Morphology Processing</value>
</data> </data>
@@ -586,8 +573,6 @@
<data name="MorphologyProcessor_Iterations_Desc" xml:space="preserve"> <data name="MorphologyProcessor_Iterations_Desc" xml:space="preserve">
<value>Number of times to repeat morphological operation</value> <value>Number of times to repeat morphological operation</value>
</data> </data>
<!-- ShockFilterProcessor -->
<data name="ShockFilterProcessor_Name" xml:space="preserve"> <data name="ShockFilterProcessor_Name" xml:space="preserve">
<value>Shock Filter</value> <value>Shock Filter</value>
</data> </data>
@@ -612,8 +597,6 @@
<data name="ShockFilterProcessor_Dt_Desc" xml:space="preserve"> <data name="ShockFilterProcessor_Dt_Desc" xml:space="preserve">
<value>Evolution time step</value> <value>Evolution time step</value>
</data> </data>
<!-- ThresholdProcessor -->
<data name="ThresholdProcessor_Name" xml:space="preserve"> <data name="ThresholdProcessor_Name" xml:space="preserve">
<value>Threshold Segmentation</value> <value>Threshold Segmentation</value>
</data> </data>
@@ -638,8 +621,6 @@
<data name="ThresholdProcessor_UseOtsu_Desc" xml:space="preserve"> <data name="ThresholdProcessor_UseOtsu_Desc" xml:space="preserve">
<value>When enabled, optimal threshold will be calculated automatically</value> <value>When enabled, optimal threshold will be calculated automatically</value>
</data> </data>
<!-- FilterProcessor -->
<data name="FilterProcessor_Name" xml:space="preserve"> <data name="FilterProcessor_Name" xml:space="preserve">
<value>Comprehensive Filter</value> <value>Comprehensive Filter</value>
</data> </data>
@@ -694,64 +675,48 @@
<data name="FilterProcessor_Order_Desc" xml:space="preserve"> <data name="FilterProcessor_Order_Desc" xml:space="preserve">
<value>Order of Butterworth filter</value> <value>Order of Butterworth filter</value>
</data> </data>
<!-- FilterProcessor - Gaussian -->
<data name="FilterProcessor_Gaussian_Name" xml:space="preserve"> <data name="FilterProcessor_Gaussian_Name" xml:space="preserve">
<value>Gaussian Filter</value> <value>Gaussian Filter</value>
</data> </data>
<data name="FilterProcessor_Gaussian_Desc" xml:space="preserve"> <data name="FilterProcessor_Gaussian_Desc" xml:space="preserve">
<value>Smooth image and reduce Gaussian noise while preserving edges</value> <value>Smooth image and reduce Gaussian noise while preserving edges</value>
</data> </data>
<!-- FilterProcessor - Median -->
<data name="FilterProcessor_Median_Name" xml:space="preserve"> <data name="FilterProcessor_Median_Name" xml:space="preserve">
<value>Median Filter</value> <value>Median Filter</value>
</data> </data>
<data name="FilterProcessor_Median_Desc" xml:space="preserve"> <data name="FilterProcessor_Median_Desc" xml:space="preserve">
<value>Remove salt-and-pepper noise effectively</value> <value>Remove salt-and-pepper noise effectively</value>
</data> </data>
<!-- FilterProcessor - Mean -->
<data name="FilterProcessor_Mean_Name" xml:space="preserve"> <data name="FilterProcessor_Mean_Name" xml:space="preserve">
<value>Mean Filter</value> <value>Mean Filter</value>
</data> </data>
<data name="FilterProcessor_Mean_Desc" xml:space="preserve"> <data name="FilterProcessor_Mean_Desc" xml:space="preserve">
<value>Simple averaging smoothing filter</value> <value>Simple averaging smoothing filter</value>
</data> </data>
<!-- FilterProcessor - Bilateral -->
<data name="FilterProcessor_Bilateral_Name" xml:space="preserve"> <data name="FilterProcessor_Bilateral_Name" xml:space="preserve">
<value>Bilateral Filter</value> <value>Bilateral Filter</value>
</data> </data>
<data name="FilterProcessor_Bilateral_Desc" xml:space="preserve"> <data name="FilterProcessor_Bilateral_Desc" xml:space="preserve">
<value>Edge-preserving smoothing filter</value> <value>Edge-preserving smoothing filter</value>
</data> </data>
<!-- FilterProcessor - LowPass -->
<data name="FilterProcessor_LowPass_Name" xml:space="preserve"> <data name="FilterProcessor_LowPass_Name" xml:space="preserve">
<value>Low Pass Filter</value> <value>Low Pass Filter</value>
</data> </data>
<data name="FilterProcessor_LowPass_Desc" xml:space="preserve"> <data name="FilterProcessor_LowPass_Desc" xml:space="preserve">
<value>Remove high frequency noise in frequency domain</value> <value>Remove high frequency noise in frequency domain</value>
</data> </data>
<!-- FilterProcessor - HighPass -->
<data name="FilterProcessor_HighPass_Name" xml:space="preserve"> <data name="FilterProcessor_HighPass_Name" xml:space="preserve">
<value>High Pass Filter</value> <value>High Pass Filter</value>
</data> </data>
<data name="FilterProcessor_HighPass_Desc" xml:space="preserve"> <data name="FilterProcessor_HighPass_Desc" xml:space="preserve">
<value>Edge enhancement in frequency domain</value> <value>Edge enhancement in frequency domain</value>
</data> </data>
<!-- FilterProcessor - BandPass -->
<data name="FilterProcessor_BandPass_Name" xml:space="preserve"> <data name="FilterProcessor_BandPass_Name" xml:space="preserve">
<value>Band Pass Filter</value> <value>Band Pass Filter</value>
</data> </data>
<data name="FilterProcessor_BandPass_Desc" xml:space="preserve"> <data name="FilterProcessor_BandPass_Desc" xml:space="preserve">
<value>Preserve image information within specified frequency range</value> <value>Preserve image information within specified frequency range</value>
</data> </data>
<!-- MedianFilterProcessor -->
<data name="MedianFilterProcessor_Name" xml:space="preserve"> <data name="MedianFilterProcessor_Name" xml:space="preserve">
<value>Median Filter</value> <value>Median Filter</value>
</data> </data>
@@ -764,8 +729,6 @@
<data name="MedianFilterProcessor_KernelSize_Desc" xml:space="preserve"> <data name="MedianFilterProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of the filter kernel (must be odd)</value> <value>Size of the filter kernel (must be odd)</value>
</data> </data>
<!-- MeanFilterProcessor -->
<data name="MeanFilterProcessor_Name" xml:space="preserve"> <data name="MeanFilterProcessor_Name" xml:space="preserve">
<value>Mean Filter</value> <value>Mean Filter</value>
</data> </data>
@@ -778,8 +741,6 @@
<data name="MeanFilterProcessor_KernelSize_Desc" xml:space="preserve"> <data name="MeanFilterProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of the filter kernel (must be odd)</value> <value>Size of the filter kernel (must be odd)</value>
</data> </data>
<!-- BilateralFilterProcessor -->
<data name="BilateralFilterProcessor_Name" xml:space="preserve"> <data name="BilateralFilterProcessor_Name" xml:space="preserve">
<value>Bilateral Filter</value> <value>Bilateral Filter</value>
</data> </data>
@@ -804,8 +765,6 @@
<data name="BilateralFilterProcessor_SigmaSpace_Desc" xml:space="preserve"> <data name="BilateralFilterProcessor_SigmaSpace_Desc" xml:space="preserve">
<value>Filter sigma in the coordinate space</value> <value>Filter sigma in the coordinate space</value>
</data> </data>
<!-- LowPassFilterProcessor -->
<data name="LowPassFilterProcessor_Name" xml:space="preserve"> <data name="LowPassFilterProcessor_Name" xml:space="preserve">
<value>Low Pass Filter</value> <value>Low Pass Filter</value>
</data> </data>
@@ -818,8 +777,6 @@
<data name="LowPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve"> <data name="LowPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve">
<value>Cutoff frequency for low pass filter</value> <value>Cutoff frequency for low pass filter</value>
</data> </data>
<!-- HighPassFilterProcessor -->
<data name="HighPassFilterProcessor_Name" xml:space="preserve"> <data name="HighPassFilterProcessor_Name" xml:space="preserve">
<value>High Pass Filter</value> <value>High Pass Filter</value>
</data> </data>
@@ -832,8 +789,6 @@
<data name="HighPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve"> <data name="HighPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve">
<value>Cutoff frequency for high pass filter</value> <value>Cutoff frequency for high pass filter</value>
</data> </data>
<!-- GrayscaleProcessor -->
<data name="GrayscaleProcessor_Name" xml:space="preserve"> <data name="GrayscaleProcessor_Name" xml:space="preserve">
<value>Grayscale Conversion</value> <value>Grayscale Conversion</value>
</data> </data>
@@ -846,8 +801,6 @@
<data name="GrayscaleProcessor_Method_Desc" xml:space="preserve"> <data name="GrayscaleProcessor_Method_Desc" xml:space="preserve">
<value>Method for grayscale conversion</value> <value>Method for grayscale conversion</value>
</data> </data>
<!-- SharpenProcessor -->
<data name="SharpenProcessor_Name" xml:space="preserve"> <data name="SharpenProcessor_Name" xml:space="preserve">
<value>Sharpen</value> <value>Sharpen</value>
</data> </data>
@@ -872,8 +825,6 @@
<data name="SharpenProcessor_KernelSize_Desc" xml:space="preserve"> <data name="SharpenProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of sharpening kernel (must be odd)</value> <value>Size of sharpening kernel (must be odd)</value>
</data> </data>
<!-- HistogramEqualizationProcessor -->
<data name="HistogramEqualizationProcessor_Name" xml:space="preserve"> <data name="HistogramEqualizationProcessor_Name" xml:space="preserve">
<value>Histogram Equalization</value> <value>Histogram Equalization</value>
</data> </data>
@@ -898,8 +849,6 @@
<data name="HistogramEqualizationProcessor_TileSize_Desc" xml:space="preserve"> <data name="HistogramEqualizationProcessor_TileSize_Desc" xml:space="preserve">
<value>Tile size for CLAHE</value> <value>Tile size for CLAHE</value>
</data> </data>
<!-- SobelEdgeProcessor -->
<data name="SobelEdgeProcessor_Name" xml:space="preserve"> <data name="SobelEdgeProcessor_Name" xml:space="preserve">
<value>Sobel Edge Detection</value> <value>Sobel Edge Detection</value>
</data> </data>
@@ -924,8 +873,6 @@
<data name="SobelEdgeProcessor_Scale_Desc" xml:space="preserve"> <data name="SobelEdgeProcessor_Scale_Desc" xml:space="preserve">
<value>Scale factor for edge intensity</value> <value>Scale factor for edge intensity</value>
</data> </data>
<!-- KirschEdgeProcessor -->
<data name="KirschEdgeProcessor_Name" xml:space="preserve"> <data name="KirschEdgeProcessor_Name" xml:space="preserve">
<value>Kirsch Edge Detection</value> <value>Kirsch Edge Detection</value>
</data> </data>
@@ -944,8 +891,6 @@
<data name="KirschEdgeProcessor_Scale_Desc" xml:space="preserve"> <data name="KirschEdgeProcessor_Scale_Desc" xml:space="preserve">
<value>Scale factor for edge intensity</value> <value>Scale factor for edge intensity</value>
</data> </data>
<!-- HorizontalEdgeProcessor -->
<data name="HorizontalEdgeProcessor_Name" xml:space="preserve"> <data name="HorizontalEdgeProcessor_Name" xml:space="preserve">
<value>Horizontal Edge Detection</value> <value>Horizontal Edge Detection</value>
</data> </data>
@@ -970,8 +915,6 @@
<data name="HorizontalEdgeProcessor_Threshold_Desc" xml:space="preserve"> <data name="HorizontalEdgeProcessor_Threshold_Desc" xml:space="preserve">
<value>Edge detection threshold</value> <value>Edge detection threshold</value>
</data> </data>
<!-- RetinexProcessor -->
<data name="RetinexProcessor_Name" xml:space="preserve"> <data name="RetinexProcessor_Name" xml:space="preserve">
<value>Retinex Shadow Correction</value> <value>Retinex Shadow Correction</value>
</data> </data>
@@ -1014,8 +957,6 @@
<data name="RetinexProcessor_Offset_Desc" xml:space="preserve"> <data name="RetinexProcessor_Offset_Desc" xml:space="preserve">
<value>Output offset value</value> <value>Output offset value</value>
</data> </data>
<!-- HDREnhancementProcessor -->
<data name="HDREnhancementProcessor_Name" xml:space="preserve"> <data name="HDREnhancementProcessor_Name" xml:space="preserve">
<value>HDR Enhancement</value> <value>HDR Enhancement</value>
</data> </data>
@@ -1064,8 +1005,6 @@
<data name="HDREnhancementProcessor_Bias_Desc" xml:space="preserve"> <data name="HDREnhancementProcessor_Bias_Desc" xml:space="preserve">
<value>Bias for adaptive logarithmic and Drago mapping, controls dark/bright balance</value> <value>Bias for adaptive logarithmic and Drago mapping, controls dark/bright balance</value>
</data> </data>
<!-- MirrorProcessor -->
<data name="MirrorProcessor_Name" xml:space="preserve"> <data name="MirrorProcessor_Name" xml:space="preserve">
<value>Mirror</value> <value>Mirror</value>
</data> </data>
@@ -1078,8 +1017,6 @@
<data name="MirrorProcessor_Direction_Desc" xml:space="preserve"> <data name="MirrorProcessor_Direction_Desc" xml:space="preserve">
<value>Flip direction: Horizontal (left-right), Vertical (up-down), Both (180° rotation)</value> <value>Flip direction: Horizontal (left-right), Vertical (up-down), Both (180° rotation)</value>
</data> </data>
<!-- RotateProcessor -->
<data name="RotateProcessor_Name" xml:space="preserve"> <data name="RotateProcessor_Name" xml:space="preserve">
<value>Rotate</value> <value>Rotate</value>
</data> </data>
@@ -1110,8 +1047,6 @@
<data name="RotateProcessor_Interpolation_Desc" xml:space="preserve"> <data name="RotateProcessor_Interpolation_Desc" xml:space="preserve">
<value>Interpolation method: Nearest (fast), Bilinear (smooth), Bicubic (high quality)</value> <value>Interpolation method: Nearest (fast), Bilinear (smooth), Bicubic (high quality)</value>
</data> </data>
<!-- PseudoColorProcessor -->
<data name="PseudoColorProcessor_Name" xml:space="preserve"> <data name="PseudoColorProcessor_Name" xml:space="preserve">
<value>Pseudo Color Rendering</value> <value>Pseudo Color Rendering</value>
</data> </data>
@@ -1142,8 +1077,6 @@
<data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve"> <data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve">
<value>Reverse the color mapping direction</value> <value>Reverse the color mapping direction</value>
</data> </data>
<!-- FilmEffectProcessor -->
<data name="FilmEffectProcessor_Name" xml:space="preserve"> <data name="FilmEffectProcessor_Name" xml:space="preserve">
<value>Electronic Film Effect</value> <value>Electronic Film Effect</value>
</data> </data>
@@ -1186,8 +1119,6 @@
<data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve"> <data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve">
<value>Edge enhancement strength to simulate film sharpening, 0 to disable</value> <value>Edge enhancement strength to simulate film sharpening, 0 to disable</value>
</data> </data>
<!-- SubPixelZoomProcessor -->
<data name="SubPixelZoomProcessor_Name" xml:space="preserve"> <data name="SubPixelZoomProcessor_Name" xml:space="preserve">
<value>Sub-Pixel Zoom</value> <value>Sub-Pixel Zoom</value>
</data> </data>
@@ -1218,8 +1149,6 @@
<data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve"> <data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve">
<value>Strength of post-zoom sharpening</value> <value>Strength of post-zoom sharpening</value>
</data> </data>
<!-- SuperResolutionProcessor -->
<data name="SuperResolutionProcessor_Name" xml:space="preserve"> <data name="SuperResolutionProcessor_Name" xml:space="preserve">
<value>Super Resolution (AI)</value> <value>Super Resolution (AI)</value>
</data> </data>
@@ -1238,8 +1167,6 @@
<data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve"> <data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve">
<value>Upscaling factor: 2x, 3x, or 4x</value> <value>Upscaling factor: 2x, 3x, or 4x</value>
</data> </data>
<!-- ColorLayerProcessor -->
<data name="ColorLayerProcessor_Name" xml:space="preserve"> <data name="ColorLayerProcessor_Name" xml:space="preserve">
<value>Color Layer Separation</value> <value>Color Layer Separation</value>
</data> </data>
@@ -1270,8 +1197,6 @@
<data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve"> <data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve">
<value>0 = show all layers, 1~N = show only the specified layer (white) with others black</value> <value>0 = show all layers, 1~N = show only the specified layer (white) with others black</value>
</data> </data>
<!-- HierarchicalEnhancementProcessor -->
<data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve">
<value>Hierarchical Enhancement</value> <value>Hierarchical Enhancement</value>
</data> </data>
@@ -1314,16 +1239,12 @@
<data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve">
<value>Limit detail amplitude to prevent over-enhancement artifacts. 0 = no limit</value> <value>Limit detail amplitude to prevent over-enhancement artifacts. 0 = no limit</value>
</data> </data>
<!-- HistogramOverlayProcessor -->
<data name="HistogramOverlayProcessor_Name" xml:space="preserve"> <data name="HistogramOverlayProcessor_Name" xml:space="preserve">
<value>Histogram Overlay</value> <value>Histogram Overlay</value>
</data> </data>
<data name="HistogramOverlayProcessor_Description" xml:space="preserve"> <data name="HistogramOverlayProcessor_Description" xml:space="preserve">
<value>Compute grayscale histogram and overlay it on the top-left corner of the image with statistics</value> <value>Compute grayscale histogram and overlay it on the top-left corner of the image with statistics</value>
</data> </data>
<!-- EllipseDetectionProcessor -->
<data name="EllipseDetectionProcessor_Name" xml:space="preserve"> <data name="EllipseDetectionProcessor_Name" xml:space="preserve">
<value>Ellipse Detection</value> <value>Ellipse Detection</value>
</data> </data>
@@ -1384,8 +1305,6 @@
<data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve"> <data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of ellipse drawing lines</value> <value>Thickness of ellipse drawing lines</value>
</data> </data>
<!-- LineMeasurementProcessor -->
<data name="LineMeasurementProcessor_Name" xml:space="preserve"> <data name="LineMeasurementProcessor_Name" xml:space="preserve">
<value>Line Measurement</value> <value>Line Measurement</value>
</data> </data>
@@ -1440,8 +1359,6 @@
<data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve"> <data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve">
<value>Display distance label on the measurement line</value> <value>Display distance label on the measurement line</value>
</data> </data>
<!-- FillRateProcessor -->
<data name="FillRateProcessor_Name" xml:space="preserve"> <data name="FillRateProcessor_Name" xml:space="preserve">
<value>Via Fill Rate (Tilted Geometric)</value> <value>Via Fill Rate (Tilted Geometric)</value>
</data> </data>
@@ -1460,8 +1377,6 @@
<data name="FillRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="FillRateProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of ROI ellipse lines</value> <value>Thickness of ROI ellipse lines</value>
</data> </data>
<!-- BgaVoidRateProcessor -->
<data name="BgaVoidRateProcessor_Name" xml:space="preserve"> <data name="BgaVoidRateProcessor_Name" xml:space="preserve">
<value>BGA Void Rate (Auto)</value> <value>BGA Void Rate (Auto)</value>
</data> </data>
@@ -1528,8 +1443,6 @@
<data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of contour lines</value> <value>Thickness of contour lines</value>
</data> </data>
<!-- PointToLineProcessor -->
<data name="PointToLineProcessor_Name" xml:space="preserve"> <data name="PointToLineProcessor_Name" xml:space="preserve">
<value>Point-to-Line Distance</value> <value>Point-to-Line Distance</value>
</data> </data>
@@ -1554,16 +1467,12 @@
<data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve"> <data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of drawing lines</value> <value>Thickness of drawing lines</value>
</data> </data>
<!-- AngleMeasurementProcessor -->
<data name="AngleMeasurementProcessor_Name" xml:space="preserve"> <data name="AngleMeasurementProcessor_Name" xml:space="preserve">
<value>Angle Measurement</value> <value>Angle Measurement</value>
</data> </data>
<data name="AngleMeasurementProcessor_Description" xml:space="preserve"> <data name="AngleMeasurementProcessor_Description" xml:space="preserve">
<value>Measure angle between two rays sharing a common vertex</value> <value>Measure angle between two rays sharing a common vertex</value>
</data> </data>
<!-- VoidMeasurementProcessor -->
<data name="VoidMeasurementProcessor_Name" xml:space="preserve"> <data name="VoidMeasurementProcessor_Name" xml:space="preserve">
<value>Void Measurement</value> <value>Void Measurement</value>
</data> </data>
@@ -1606,8 +1515,6 @@
<data name="VoidMeasurementProcessor_VoidLimit_Desc" xml:space="preserve"> <data name="VoidMeasurementProcessor_VoidLimit_Desc" xml:space="preserve">
<value>Void rate above this limit is classified as FAIL</value> <value>Void rate above this limit is classified as FAIL</value>
</data> </data>
<!-- EmbossProcessor -->
<data name="EmbossProcessor_Name" xml:space="preserve"> <data name="EmbossProcessor_Name" xml:space="preserve">
<value>Emboss Pseudo-3D</value> <value>Emboss Pseudo-3D</value>
</data> </data>
@@ -1638,4 +1545,262 @@
<data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve"> <data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve">
<value>Gray level offset for flat areas (128=mid-gray base)</value> <value>Gray level offset for flat areas (128=mid-gray base)</value>
</data> </data>
<data name="OrProcessor_Name" xml:space="preserve">
<value>Bitwise OR Operation</value>
</data>
<data name="OrProcessor_Description" xml:space="preserve">
<value>Perform bitwise OR operation on images, supporting OR operation with fixed values, which can be used for image merging and mask operations.</value>
</data>
<data name="OrProcessor_Value" xml:space="preserve">
<value>Value</value>
</data>
<data name="OrProcessor_Value_Desc" xml:space="preserve">
<value>Value for bitwise OR operation with each pixel of the image (0255)</value>
</data>
<data name="DifferenceProcessor_Name" xml:space="preserve">
<value>Differential Operation</value>
</data>
<data name="DifferenceProcessor_Description" xml:space="preserve">
<value>Perform differential operation on images, supporting horizontal, vertical and diagonal differentiation, which can be used for edge detection.</value>
</data>
<data name="DifferenceProcessor_Direction" xml:space="preserve">
<value>Direction</value>
</data>
<data name="DifferenceProcessor_Direction_Desc" xml:space="preserve">
<value>Differential Directions: Horizontal, Vertical, Both (Gradient Magnitude)</value>
</data>
<data name="DifferenceProcessor_Normalize" xml:space="preserve">
<value>Normalized Output</value>
</data>
<data name="DifferenceProcessor_Normalize_Desc" xml:space="preserve">
<value>Normalize the result to the range of 0-255.</value>
</data>
<data name="MultiplicationProcessor_Name" xml:space="preserve">
<value>Multiplication Operation</value>
</data>
<data name="MultiplicationProcessor_Description" xml:space="preserve">
<value>Perform multiplication operations on image pixel values, commonly used for image enhancement and contrast adjustment.</value>
</data>
<data name="MultiplicationProcessor_Multiplier" xml:space="preserve">
<value>Multiplier</value>
</data>
<data name="MultiplicationProcessor_Multiplier_Desc" xml:space="preserve">
<value>Pixel values are multiplied by this coefficient (0.110.0).</value>
</data>
<data name="MultiplicationProcessor_Normalize" xml:space="preserve">
<value>Normalized Output</value>
</data>
<data name="MultiplicationProcessor_Normalize_Desc" xml:space="preserve">
<value>Normalize the result to the range of 0255</value>
</data>
<data name="IntegralProcessor_Name" xml:space="preserve">
<value>Integral Calculation</value>
</data>
<data name="IntegralProcessor_Description" xml:space="preserve">
<value>Compute the integral image (cumulative sum) for fast region summation.</value>
</data>
<data name="IntegralProcessor_Normalize" xml:space="preserve">
<value>Normalized Output</value>
</data>
<data name="IntegralProcessor_Normalize_Desc" xml:space="preserve">
<value>Normalize the result to the range of 0255</value>
</data>
<!-- Nine-Point Calibration -->
<data name="CalibrationToolTitle" xml:space="preserve">
<value>Nine-Point Calibration Tool</value>
</data>
<data name="CalibrationLoadImage" xml:space="preserve">
<value>Load Image</value>
</data>
<data name="CalibrationLoadCsv" xml:space="preserve">
<value>Load from CSV</value>
</data>
<data name="CalibrationExecute" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="CalibrationSave" xml:space="preserve">
<value>Save Calibration</value>
</data>
<data name="CalibrationLoad" xml:space="preserve">
<value>Load Calibration</value>
</data>
<data name="CalibrationShowWorld" xml:space="preserve">
<value>Show World Coordinates</value>
</data>
<data name="CalibrationPointList" xml:space="preserve">
<value>Calibration Points</value>
</data>
<data name="CalibrationPixelX" xml:space="preserve">
<value>Pixel X</value>
</data>
<data name="CalibrationPixelY" xml:space="preserve">
<value>Pixel Y</value>
</data>
<data name="CalibrationWorldX" xml:space="preserve">
<value>World X</value>
</data>
<data name="CalibrationWorldY" xml:space="preserve">
<value>World Y</value>
</data>
<data name="CalibrationStatusReady" xml:space="preserve">
<value>Ready</value>
</data>
<data name="CalibrationStatusImageLoaded" xml:space="preserve">
<value>Status: Image loaded
{0}
Right-click on image to view coordinate conversion</value>
</data>
<data name="CalibrationStatusCsvLoaded" xml:space="preserve">
<value>Status: Loaded {0} calibration points from CSV
{1}</value>
</data>
<data name="CalibrationStatusSuccess" xml:space="preserve">
<value>Status: Calibration successful! Using {0} points</value>
</data>
<data name="CalibrationStatusFailed" xml:space="preserve">
<value>Status: Calibration failed</value>
</data>
<data name="CalibrationStatusSaved" xml:space="preserve">
<value>Status: Calibration saved to
{0}</value>
</data>
<data name="CalibrationStatusLoaded" xml:space="preserve">
<value>Status: Calibration loaded from
{0}</value>
</data>
<data name="CalibrationCoordinates" xml:space="preserve">
<value>Pixel coordinates: ({0:F2}, {1:F2})
World coordinates: ({2:F2}, {3:F2})</value>
</data>
<data name="CalibrationErrorMinPoints" xml:space="preserve">
<value>At least 4 calibration points required!</value>
</data>
<data name="CalibrationSuccessTitle" xml:space="preserve">
<value>Success</value>
</data>
<data name="CalibrationSuccessMessage" xml:space="preserve">
<value>Calibration completed!</value>
</data>
<data name="CalibrationSaveSuccess" xml:space="preserve">
<value>Save successful!</value>
</data>
<data name="CalibrationLoadSuccess" xml:space="preserve">
<value>Load successful!</value>
</data>
<data name="CalibrationLoadFailed" xml:space="preserve">
<value>Load failed!</value>
</data>
<!-- Chessboard Calibration -->
<data name="ChessboardToolTitle" xml:space="preserve">
<value>Chessboard Calibration Tool</value>
</data>
<data name="ChessboardAddImages" xml:space="preserve">
<value>Add Images</value>
</data>
<data name="ChessboardClearImages" xml:space="preserve">
<value>Clear List</value>
</data>
<data name="ChessboardCalibrate" xml:space="preserve">
<value>Calibrate</value>
</data>
<data name="ChessboardSave" xml:space="preserve">
<value>Save Calibration</value>
</data>
<data name="ChessboardLoad" xml:space="preserve">
<value>Load Calibration</value>
</data>
<data name="ChessboardUndistort" xml:space="preserve">
<value>Undistort Image</value>
</data>
<data name="ChessboardParameters" xml:space="preserve">
<value>Chessboard Parameters</value>
</data>
<data name="ChessboardWidth" xml:space="preserve">
<value>Inner Corners Width:</value>
</data>
<data name="ChessboardHeight" xml:space="preserve">
<value>Inner Corners Height:</value>
</data>
<data name="ChessboardSquareSize" xml:space="preserve">
<value>Square Size (mm):</value>
</data>
<data name="ChessboardImageList" xml:space="preserve">
<value>Calibration Images</value>
</data>
<data name="ChessboardStatusInfo" xml:space="preserve">
<value>Status Information</value>
</data>
<data name="ChessboardStatusReady" xml:space="preserve">
<value>Ready</value>
</data>
<data name="ChessboardStatusAdded" xml:space="preserve">
<value>Added {0} images</value>
</data>
<data name="ChessboardStatusCleared" xml:space="preserve">
<value>Image list cleared</value>
</data>
<data name="ChessboardStatusCalibrating" xml:space="preserve">
<value>Calibrating, please wait...</value>
</data>
<data name="ChessboardStatusSuccess" xml:space="preserve">
<value>Calibration successful!
Overall reprojection error: {0:F4} pixels
{1}</value>
</data>
<data name="ChessboardStatusFailed" xml:space="preserve">
<value>Calibration failed: {0}</value>
</data>
<data name="ChessboardStatusSaved" xml:space="preserve">
<value>Calibration saved:
{0}</value>
</data>
<data name="ChessboardStatusLoaded" xml:space="preserve">
<value>Calibration loaded:
{0}</value>
</data>
<data name="ChessboardStatusUndistorted" xml:space="preserve">
<value>Image undistorted:
{0}</value>
</data>
<data name="ChessboardStatusImageError" xml:space="preserve">
<value>Image {0}
Reprojection error: {1:F4} pixels</value>
</data>
<data name="ChessboardProgressPreparing" xml:space="preserve">
<value>Preparing calibration...</value>
</data>
<data name="ChessboardProgressDetecting" xml:space="preserve">
<value>Detecting corners ({0}/{1})</value>
</data>
<data name="ChessboardProgressCalibrating" xml:space="preserve">
<value>Performing camera calibration...</value>
</data>
<data name="ChessboardProgressCalculating" xml:space="preserve">
<value>Calculating reprojection errors ({0}/{1})</value>
</data>
<data name="ChessboardProgressComplete" xml:space="preserve">
<value>Calibration complete</value>
</data>
<data name="ChessboardProgressFailed" xml:space="preserve">
<value>Calibration failed</value>
</data>
<data name="ChessboardErrorMinImages" xml:space="preserve">
<value>At least 3 images required!</value>
</data>
<data name="ChessboardErrorInsufficientValid" xml:space="preserve">
<value>Insufficient valid images, need at least 3, current {0}</value>
</data>
<data name="ChessboardSaveSuccess" xml:space="preserve">
<value>Save successful!</value>
</data>
<data name="ChessboardLoadSuccess" xml:space="preserve">
<value>Load successful!</value>
</data>
<data name="ChessboardCalibrationComplete" xml:space="preserve">
<value>Calibration completed!</value>
</data>
<data name="ChessboardImageError" xml:space="preserve">
<value>Image{0}: {1:F4} pixels</value>
</data>
</root> </root>
+266
View File
@@ -1571,4 +1571,270 @@
<data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve"> <data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve">
<value>平坦区域的灰度基底(128=中灰)</value> <value>平坦区域的灰度基底(128=中灰)</value>
</data> </data>
<!-- OrProcessor -->
<data name="OrProcessor_Name" xml:space="preserve">
<value>或运算</value>
</data>
<data name="OrProcessor_Description" xml:space="preserve">
<value>对图像进行按位或运算,支持与固定值或运算,可用于图像合并和掩码操作</value>
</data>
<data name="OrProcessor_Value" xml:space="preserve">
<value>值</value>
</data>
<data name="OrProcessor_Value_Desc" xml:space="preserve">
<value>与图像每个像素进行OR运算的值(0-255</value>
</data>
<!-- DifferenceProcessor -->
<data name="DifferenceProcessor_Name" xml:space="preserve">
<value>差分运算</value>
</data>
<data name="DifferenceProcessor_Description" xml:space="preserve">
<value>对图像进行差分运算,支持水平、垂直和对角线差分,可用于边缘检测</value>
</data>
<data name="DifferenceProcessor_Direction" xml:space="preserve">
<value>方向</value>
</data>
<data name="DifferenceProcessor_Direction_Desc" xml:space="preserve">
<value>差分方向:Horizontal(水平)、Vertical(垂直)、Both(梯度幅值)</value>
</data>
<data name="DifferenceProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="DifferenceProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<!-- MultiplicationProcessor -->
<data name="MultiplicationProcessor_Name" xml:space="preserve">
<value>乘法运算</value>
</data>
<data name="MultiplicationProcessor_Description" xml:space="preserve">
<value>对图像像素值进行乘法运算,常用于图像增强和对比度调整</value>
</data>
<data name="MultiplicationProcessor_Multiplier" xml:space="preserve">
<value>乘数</value>
</data>
<data name="MultiplicationProcessor_Multiplier_Desc" xml:space="preserve">
<value>像素值乘以此系数(0.1-10.0</value>
</data>
<data name="MultiplicationProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="MultiplicationProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<!-- IntegralProcessor -->
<data name="IntegralProcessor_Name" xml:space="preserve">
<value>积分运算</value>
</data>
<data name="IntegralProcessor_Description" xml:space="preserve">
<value>计算积分图像(累加和),用于快速区域求和</value>
</data>
<data name="IntegralProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="IntegralProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<!-- 九点标定 -->
<data name="CalibrationToolTitle" xml:space="preserve">
<value>九点标定工具</value>
</data>
<data name="CalibrationLoadImage" xml:space="preserve">
<value>加载图像</value>
</data>
<data name="CalibrationLoadCsv" xml:space="preserve">
<value>从CSV加载</value>
</data>
<data name="CalibrationExecute" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="CalibrationSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="CalibrationLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="CalibrationShowWorld" xml:space="preserve">
<value>显示世界坐标</value>
</data>
<data name="CalibrationPointList" xml:space="preserve">
<value>标定点列表</value>
</data>
<data name="CalibrationPixelX" xml:space="preserve">
<value>像素X</value>
</data>
<data name="CalibrationPixelY" xml:space="preserve">
<value>像素Y</value>
</data>
<data name="CalibrationWorldX" xml:space="preserve">
<value>世界X</value>
</data>
<data name="CalibrationWorldY" xml:space="preserve">
<value>世界Y</value>
</data>
<data name="CalibrationStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="CalibrationStatusImageLoaded" xml:space="preserve">
<value>状态:图像已加载
{0}
右键点击图像查看坐标转换</value>
</data>
<data name="CalibrationStatusCsvLoaded" xml:space="preserve">
<value>状态:已从CSV加载 {0} 个标定点
{1}</value>
</data>
<data name="CalibrationStatusSuccess" xml:space="preserve">
<value>状态:标定成功!使用 {0} 个点</value>
</data>
<data name="CalibrationStatusFailed" xml:space="preserve">
<value>状态:标定失败</value>
</data>
<data name="CalibrationStatusSaved" xml:space="preserve">
<value>状态:标定文件已保存到
{0}</value>
</data>
<data name="CalibrationStatusLoaded" xml:space="preserve">
<value>状态:标定文件已加载
{0}</value>
</data>
<data name="CalibrationCoordinates" xml:space="preserve">
<value>像素坐标: ({0:F2}, {1:F2})
世界坐标: ({2:F2}, {3:F2})</value>
</data>
<data name="CalibrationErrorMinPoints" xml:space="preserve">
<value>至少需要4个标定点!</value>
</data>
<data name="CalibrationSuccessTitle" xml:space="preserve">
<value>成功</value>
</data>
<data name="CalibrationSuccessMessage" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="CalibrationSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="CalibrationLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="CalibrationLoadFailed" xml:space="preserve">
<value>加载失败!</value>
</data>
<!-- 棋盘格标定 -->
<data name="ChessboardToolTitle" xml:space="preserve">
<value>棋盘格畸变校正工具</value>
</data>
<data name="ChessboardAddImages" xml:space="preserve">
<value>添加图像</value>
</data>
<data name="ChessboardClearImages" xml:space="preserve">
<value>清空列表</value>
</data>
<data name="ChessboardCalibrate" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="ChessboardSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="ChessboardLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="ChessboardUndistort" xml:space="preserve">
<value>校正图像</value>
</data>
<data name="ChessboardParameters" xml:space="preserve">
<value>棋盘格参数</value>
</data>
<data name="ChessboardWidth" xml:space="preserve">
<value>内角点宽度:</value>
</data>
<data name="ChessboardHeight" xml:space="preserve">
<value>内角点高度:</value>
</data>
<data name="ChessboardSquareSize" xml:space="preserve">
<value>方格尺寸(mm):</value>
</data>
<data name="ChessboardImageList" xml:space="preserve">
<value>标定图像列表</value>
</data>
<data name="ChessboardStatusInfo" xml:space="preserve">
<value>状态信息</value>
</data>
<data name="ChessboardStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="ChessboardStatusAdded" xml:space="preserve">
<value>已添加 {0} 张图像</value>
</data>
<data name="ChessboardStatusCleared" xml:space="preserve">
<value>已清空图像列表</value>
</data>
<data name="ChessboardStatusCalibrating" xml:space="preserve">
<value>正在标定,请稍候...</value>
</data>
<data name="ChessboardStatusSuccess" xml:space="preserve">
<value>标定成功!
总体重投影误差: {0:F4} 像素
{1}</value>
</data>
<data name="ChessboardStatusFailed" xml:space="preserve">
<value>标定失败: {0}</value>
</data>
<data name="ChessboardStatusSaved" xml:space="preserve">
<value>标定已保存:
{0}</value>
</data>
<data name="ChessboardStatusLoaded" xml:space="preserve">
<value>标定已加载:
{0}</value>
</data>
<data name="ChessboardStatusUndistorted" xml:space="preserve">
<value>已校正图像:
{0}</value>
</data>
<data name="ChessboardStatusImageError" xml:space="preserve">
<value>图像 {0}
重投影误差: {1:F4} 像素</value>
</data>
<data name="ChessboardProgressPreparing" xml:space="preserve">
<value>准备标定...</value>
</data>
<data name="ChessboardProgressDetecting" xml:space="preserve">
<value>检测角点 ({0}/{1})</value>
</data>
<data name="ChessboardProgressCalibrating" xml:space="preserve">
<value>执行相机标定...</value>
</data>
<data name="ChessboardProgressCalculating" xml:space="preserve">
<value>计算重投影误差 ({0}/{1})</value>
</data>
<data name="ChessboardProgressComplete" xml:space="preserve">
<value>标定完成</value>
</data>
<data name="ChessboardProgressFailed" xml:space="preserve">
<value>标定失败</value>
</data>
<data name="ChessboardErrorMinImages" xml:space="preserve">
<value>至少需要3张图像!</value>
</data>
<data name="ChessboardErrorInsufficientValid" xml:space="preserve">
<value>有效图像不足,需要至少3张,当前{0}张</value>
</data>
<data name="ChessboardSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="ChessboardLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="ChessboardCalibrationComplete" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="ChessboardImageError" xml:space="preserve">
<value>图像{0}: {1:F4} 像素</value>
</data>
</root> </root>
+258 -26
View File
@@ -1077,8 +1077,6 @@
<data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve"> <data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve">
<value>反转色彩映射方向</value> <value>反转色彩映射方向</value>
</data> </data>
<!-- FilmEffectProcessor -->
<data name="FilmEffectProcessor_Name" xml:space="preserve"> <data name="FilmEffectProcessor_Name" xml:space="preserve">
<value>电子胶片效果</value> <value>电子胶片效果</value>
</data> </data>
@@ -1121,8 +1119,6 @@
<data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve"> <data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve">
<value>边缘增强强度,模拟胶片锐化效果,0为关闭</value> <value>边缘增强强度,模拟胶片锐化效果,0为关闭</value>
</data> </data>
<!-- SubPixelZoomProcessor -->
<data name="SubPixelZoomProcessor_Name" xml:space="preserve"> <data name="SubPixelZoomProcessor_Name" xml:space="preserve">
<value>亚像素放大</value> <value>亚像素放大</value>
</data> </data>
@@ -1153,8 +1149,6 @@
<data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve"> <data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve">
<value>放大后锐化的强度</value> <value>放大后锐化的强度</value>
</data> </data>
<!-- SuperResolutionProcessor -->
<data name="SuperResolutionProcessor_Name" xml:space="preserve"> <data name="SuperResolutionProcessor_Name" xml:space="preserve">
<value>超分辨率重建 (AI)</value> <value>超分辨率重建 (AI)</value>
</data> </data>
@@ -1173,8 +1167,6 @@
<data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve"> <data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve">
<value>放大倍率:2x、3x 或 4x</value> <value>放大倍率:2x、3x 或 4x</value>
</data> </data>
<!-- ColorLayerProcessor -->
<data name="ColorLayerProcessor_Name" xml:space="preserve"> <data name="ColorLayerProcessor_Name" xml:space="preserve">
<value>色彩分层</value> <value>色彩分层</value>
</data> </data>
@@ -1205,8 +1197,6 @@
<data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve"> <data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve">
<value>0 = 显示全部层,1~N = 只显示指定层(白色),其余为黑色</value> <value>0 = 显示全部层,1~N = 只显示指定层(白色),其余为黑色</value>
</data> </data>
<!-- HierarchicalEnhancementProcessor -->
<data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve">
<value>层次增强</value> <value>层次增强</value>
</data> </data>
@@ -1249,16 +1239,12 @@
<data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve">
<value>限制细节幅度,防止过增强产生伪影。0=不限制</value> <value>限制细节幅度,防止过增强产生伪影。0=不限制</value>
</data> </data>
<!-- HistogramOverlayProcessor -->
<data name="HistogramOverlayProcessor_Name" xml:space="preserve"> <data name="HistogramOverlayProcessor_Name" xml:space="preserve">
<value>直方图叠加</value> <value>直方图叠加</value>
</data> </data>
<data name="HistogramOverlayProcessor_Description" xml:space="preserve"> <data name="HistogramOverlayProcessor_Description" xml:space="preserve">
<value>计算灰度直方图,以蓝色柱状图叠加到图像左上角,并输出统计表格</value> <value>计算灰度直方图,以蓝色柱状图叠加到图像左上角,并输出统计表格</value>
</data> </data>
<!-- EllipseDetectionProcessor -->
<data name="EllipseDetectionProcessor_Name" xml:space="preserve"> <data name="EllipseDetectionProcessor_Name" xml:space="preserve">
<value>椭圆检测</value> <value>椭圆检测</value>
</data> </data>
@@ -1319,8 +1305,6 @@
<data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve"> <data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve">
<value>绘制椭圆的线条粗细</value> <value>绘制椭圆的线条粗细</value>
</data> </data>
<!-- LineMeasurementProcessor -->
<data name="LineMeasurementProcessor_Name" xml:space="preserve"> <data name="LineMeasurementProcessor_Name" xml:space="preserve">
<value>直线测量</value> <value>直线测量</value>
</data> </data>
@@ -1375,8 +1359,6 @@
<data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve"> <data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve">
<value>在测量线上显示距离标注</value> <value>在测量线上显示距离标注</value>
</data> </data>
<!-- FillRateProcessor -->
<data name="FillRateProcessor_Name" xml:space="preserve"> <data name="FillRateProcessor_Name" xml:space="preserve">
<value>通孔填锡率</value> <value>通孔填锡率</value>
</data> </data>
@@ -1395,8 +1377,6 @@
<data name="FillRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="FillRateProcessor_Thickness_Desc" xml:space="preserve">
<value>ROI椭圆线条粗细</value> <value>ROI椭圆线条粗细</value>
</data> </data>
<!-- BgaVoidRateProcessor -->
<data name="BgaVoidRateProcessor_Name" xml:space="preserve"> <data name="BgaVoidRateProcessor_Name" xml:space="preserve">
<value>BGA空洞率检测(自动)</value> <value>BGA空洞率检测(自动)</value>
</data> </data>
@@ -1463,8 +1443,6 @@
<data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve">
<value>轮廓线条粗细</value> <value>轮廓线条粗细</value>
</data> </data>
<!-- PointToLineProcessor -->
<data name="PointToLineProcessor_Name" xml:space="preserve"> <data name="PointToLineProcessor_Name" xml:space="preserve">
<value>点到直线距离</value> <value>点到直线距离</value>
</data> </data>
@@ -1489,16 +1467,12 @@
<data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve"> <data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve">
<value>绘制线条粗细</value> <value>绘制线条粗细</value>
</data> </data>
<!-- AngleMeasurementProcessor -->
<data name="AngleMeasurementProcessor_Name" xml:space="preserve"> <data name="AngleMeasurementProcessor_Name" xml:space="preserve">
<value>角度测量</value> <value>角度测量</value>
</data> </data>
<data name="AngleMeasurementProcessor_Description" xml:space="preserve"> <data name="AngleMeasurementProcessor_Description" xml:space="preserve">
<value>测量共端点两条射线的夹角</value> <value>测量共端点两条射线的夹角</value>
</data> </data>
<!-- VoidMeasurementProcessor -->
<data name="VoidMeasurementProcessor_Name" xml:space="preserve"> <data name="VoidMeasurementProcessor_Name" xml:space="preserve">
<value>空隙测量</value> <value>空隙测量</value>
</data> </data>
@@ -1571,4 +1545,262 @@
<data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve"> <data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve">
<value>平坦区域的灰度基底(128=中灰)</value> <value>平坦区域的灰度基底(128=中灰)</value>
</data> </data>
<data name="OrProcessor_Name" xml:space="preserve">
<value>或运算</value>
</data>
<data name="OrProcessor_Description" xml:space="preserve">
<value>对图像进行按位或运算,支持与固定值或运算,可用于图像合并和掩码操作</value>
</data>
<data name="OrProcessor_Value" xml:space="preserve">
<value>值</value>
</data>
<data name="OrProcessor_Value_Desc" xml:space="preserve">
<value>与图像每个像素进行OR运算的值(0-255</value>
</data>
<data name="DifferenceProcessor_Name" xml:space="preserve">
<value>差分运算</value>
</data>
<data name="DifferenceProcessor_Description" xml:space="preserve">
<value>对图像进行差分运算,支持水平、垂直和对角线差分,可用于边缘检测</value>
</data>
<data name="DifferenceProcessor_Direction" xml:space="preserve">
<value>方向</value>
</data>
<data name="DifferenceProcessor_Direction_Desc" xml:space="preserve">
<value>差分方向:Horizontal(水平)、Vertical(垂直)、Both(梯度幅值)</value>
</data>
<data name="DifferenceProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="DifferenceProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<data name="MultiplicationProcessor_Name" xml:space="preserve">
<value>乘法运算</value>
</data>
<data name="MultiplicationProcessor_Description" xml:space="preserve">
<value>对图像像素值进行乘法运算,常用于图像增强和对比度调整</value>
</data>
<data name="MultiplicationProcessor_Multiplier" xml:space="preserve">
<value>乘数</value>
</data>
<data name="MultiplicationProcessor_Multiplier_Desc" xml:space="preserve">
<value>像素值乘以此系数(0.1-10.0</value>
</data>
<data name="MultiplicationProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="MultiplicationProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<data name="IntegralProcessor_Name" xml:space="preserve">
<value>积分运算</value>
</data>
<data name="IntegralProcessor_Description" xml:space="preserve">
<value>计算积分图像(累加和),用于快速区域求和</value>
</data>
<data name="IntegralProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="IntegralProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<!-- 九点标定 -->
<data name="CalibrationToolTitle" xml:space="preserve">
<value>九点标定工具</value>
</data>
<data name="CalibrationLoadImage" xml:space="preserve">
<value>加载图像</value>
</data>
<data name="CalibrationLoadCsv" xml:space="preserve">
<value>从CSV加载</value>
</data>
<data name="CalibrationExecute" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="CalibrationSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="CalibrationLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="CalibrationShowWorld" xml:space="preserve">
<value>显示世界坐标</value>
</data>
<data name="CalibrationPointList" xml:space="preserve">
<value>标定点列表</value>
</data>
<data name="CalibrationPixelX" xml:space="preserve">
<value>像素X</value>
</data>
<data name="CalibrationPixelY" xml:space="preserve">
<value>像素Y</value>
</data>
<data name="CalibrationWorldX" xml:space="preserve">
<value>世界X</value>
</data>
<data name="CalibrationWorldY" xml:space="preserve">
<value>世界Y</value>
</data>
<data name="CalibrationStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="CalibrationStatusImageLoaded" xml:space="preserve">
<value>状态:图像已加载
{0}
右键点击图像查看坐标转换</value>
</data>
<data name="CalibrationStatusCsvLoaded" xml:space="preserve">
<value>状态:已从CSV加载 {0} 个标定点
{1}</value>
</data>
<data name="CalibrationStatusSuccess" xml:space="preserve">
<value>状态:标定成功!使用 {0} 个点</value>
</data>
<data name="CalibrationStatusFailed" xml:space="preserve">
<value>状态:标定失败</value>
</data>
<data name="CalibrationStatusSaved" xml:space="preserve">
<value>状态:标定文件已保存到
{0}</value>
</data>
<data name="CalibrationStatusLoaded" xml:space="preserve">
<value>状态:标定文件已加载
{0}</value>
</data>
<data name="CalibrationCoordinates" xml:space="preserve">
<value>像素坐标: ({0:F2}, {1:F2})
世界坐标: ({2:F2}, {3:F2})</value>
</data>
<data name="CalibrationErrorMinPoints" xml:space="preserve">
<value>至少需要4个标定点!</value>
</data>
<data name="CalibrationSuccessTitle" xml:space="preserve">
<value>成功</value>
</data>
<data name="CalibrationSuccessMessage" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="CalibrationSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="CalibrationLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="CalibrationLoadFailed" xml:space="preserve">
<value>加载失败!</value>
</data>
<!-- 棋盘格标定 -->
<data name="ChessboardToolTitle" xml:space="preserve">
<value>棋盘格畸变校正工具</value>
</data>
<data name="ChessboardAddImages" xml:space="preserve">
<value>添加图像</value>
</data>
<data name="ChessboardClearImages" xml:space="preserve">
<value>清空列表</value>
</data>
<data name="ChessboardCalibrate" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="ChessboardSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="ChessboardLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="ChessboardUndistort" xml:space="preserve">
<value>校正图像</value>
</data>
<data name="ChessboardParameters" xml:space="preserve">
<value>棋盘格参数</value>
</data>
<data name="ChessboardWidth" xml:space="preserve">
<value>内角点宽度:</value>
</data>
<data name="ChessboardHeight" xml:space="preserve">
<value>内角点高度:</value>
</data>
<data name="ChessboardSquareSize" xml:space="preserve">
<value>方格尺寸(mm):</value>
</data>
<data name="ChessboardImageList" xml:space="preserve">
<value>标定图像列表</value>
</data>
<data name="ChessboardStatusInfo" xml:space="preserve">
<value>状态信息</value>
</data>
<data name="ChessboardStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="ChessboardStatusAdded" xml:space="preserve">
<value>已添加 {0} 张图像</value>
</data>
<data name="ChessboardStatusCleared" xml:space="preserve">
<value>已清空图像列表</value>
</data>
<data name="ChessboardStatusCalibrating" xml:space="preserve">
<value>正在标定,请稍候...</value>
</data>
<data name="ChessboardStatusSuccess" xml:space="preserve">
<value>标定成功!
总体重投影误差: {0:F4} 像素
{1}</value>
</data>
<data name="ChessboardStatusFailed" xml:space="preserve">
<value>标定失败: {0}</value>
</data>
<data name="ChessboardStatusSaved" xml:space="preserve">
<value>标定已保存:
{0}</value>
</data>
<data name="ChessboardStatusLoaded" xml:space="preserve">
<value>标定已加载:
{0}</value>
</data>
<data name="ChessboardStatusUndistorted" xml:space="preserve">
<value>已校正图像:
{0}</value>
</data>
<data name="ChessboardStatusImageError" xml:space="preserve">
<value>图像 {0}
重投影误差: {1:F4} 像素</value>
</data>
<data name="ChessboardProgressPreparing" xml:space="preserve">
<value>准备标定...</value>
</data>
<data name="ChessboardProgressDetecting" xml:space="preserve">
<value>检测角点 ({0}/{1})</value>
</data>
<data name="ChessboardProgressCalibrating" xml:space="preserve">
<value>执行相机标定...</value>
</data>
<data name="ChessboardProgressCalculating" xml:space="preserve">
<value>计算重投影误差 ({0}/{1})</value>
</data>
<data name="ChessboardProgressComplete" xml:space="preserve">
<value>标定完成</value>
</data>
<data name="ChessboardProgressFailed" xml:space="preserve">
<value>标定失败</value>
</data>
<data name="ChessboardErrorMinImages" xml:space="preserve">
<value>至少需要3张图像!</value>
</data>
<data name="ChessboardErrorInsufficientValid" xml:space="preserve">
<value>有效图像不足,需要至少3张,当前{0}张</value>
</data>
<data name="ChessboardSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="ChessboardLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="ChessboardCalibrationComplete" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="ChessboardImageError" xml:space="preserve">
<value>图像{0}: {1:F4} 像素</value>
</data>
</root> </root>
+258 -26
View File
@@ -1077,8 +1077,6 @@
<data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve"> <data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve">
<value>反转色彩映射方向</value> <value>反转色彩映射方向</value>
</data> </data>
<!-- FilmEffectProcessor -->
<data name="FilmEffectProcessor_Name" xml:space="preserve"> <data name="FilmEffectProcessor_Name" xml:space="preserve">
<value>电子胶片效果</value> <value>电子胶片效果</value>
</data> </data>
@@ -1121,8 +1119,6 @@
<data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve"> <data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve">
<value>边缘增强强度,模拟胶片锐化效果,0为关闭</value> <value>边缘增强强度,模拟胶片锐化效果,0为关闭</value>
</data> </data>
<!-- SubPixelZoomProcessor -->
<data name="SubPixelZoomProcessor_Name" xml:space="preserve"> <data name="SubPixelZoomProcessor_Name" xml:space="preserve">
<value>亚像素放大</value> <value>亚像素放大</value>
</data> </data>
@@ -1153,8 +1149,6 @@
<data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve"> <data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve">
<value>放大后锐化的强度</value> <value>放大后锐化的强度</value>
</data> </data>
<!-- SuperResolutionProcessor -->
<data name="SuperResolutionProcessor_Name" xml:space="preserve"> <data name="SuperResolutionProcessor_Name" xml:space="preserve">
<value>超分辨率重建 (AI)</value> <value>超分辨率重建 (AI)</value>
</data> </data>
@@ -1173,8 +1167,6 @@
<data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve"> <data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve">
<value>放大倍率:2x、3x 或 4x</value> <value>放大倍率:2x、3x 或 4x</value>
</data> </data>
<!-- ColorLayerProcessor -->
<data name="ColorLayerProcessor_Name" xml:space="preserve"> <data name="ColorLayerProcessor_Name" xml:space="preserve">
<value>色彩分层</value> <value>色彩分层</value>
</data> </data>
@@ -1205,8 +1197,6 @@
<data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve"> <data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve">
<value>0 = 显示全部层,1~N = 只显示指定层(白色),其余为黑色</value> <value>0 = 显示全部层,1~N = 只显示指定层(白色),其余为黑色</value>
</data> </data>
<!-- HierarchicalEnhancementProcessor -->
<data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve">
<value>层次增强</value> <value>层次增强</value>
</data> </data>
@@ -1249,16 +1239,12 @@
<data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve"> <data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve">
<value>限制细节幅度,防止过增强产生伪影。0=不限制</value> <value>限制细节幅度,防止过增强产生伪影。0=不限制</value>
</data> </data>
<!-- HistogramOverlayProcessor -->
<data name="HistogramOverlayProcessor_Name" xml:space="preserve"> <data name="HistogramOverlayProcessor_Name" xml:space="preserve">
<value>直方图叠加</value> <value>直方图叠加</value>
</data> </data>
<data name="HistogramOverlayProcessor_Description" xml:space="preserve"> <data name="HistogramOverlayProcessor_Description" xml:space="preserve">
<value>计算灰度直方图,以蓝色柱状图叠加到图像左上角,并输出统计表格</value> <value>计算灰度直方图,以蓝色柱状图叠加到图像左上角,并输出统计表格</value>
</data> </data>
<!-- EllipseDetectionProcessor -->
<data name="EllipseDetectionProcessor_Name" xml:space="preserve"> <data name="EllipseDetectionProcessor_Name" xml:space="preserve">
<value>椭圆检测</value> <value>椭圆检测</value>
</data> </data>
@@ -1319,8 +1305,6 @@
<data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve"> <data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve">
<value>绘制椭圆的线条粗细</value> <value>绘制椭圆的线条粗细</value>
</data> </data>
<!-- LineMeasurementProcessor -->
<data name="LineMeasurementProcessor_Name" xml:space="preserve"> <data name="LineMeasurementProcessor_Name" xml:space="preserve">
<value>直线测量</value> <value>直线测量</value>
</data> </data>
@@ -1375,8 +1359,6 @@
<data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve"> <data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve">
<value>在测量线上显示距离标注</value> <value>在测量线上显示距离标注</value>
</data> </data>
<!-- FillRateProcessor -->
<data name="FillRateProcessor_Name" xml:space="preserve"> <data name="FillRateProcessor_Name" xml:space="preserve">
<value>通孔填锡率</value> <value>通孔填锡率</value>
</data> </data>
@@ -1395,8 +1377,6 @@
<data name="FillRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="FillRateProcessor_Thickness_Desc" xml:space="preserve">
<value>ROI椭圆线条粗细</value> <value>ROI椭圆线条粗细</value>
</data> </data>
<!-- BgaVoidRateProcessor -->
<data name="BgaVoidRateProcessor_Name" xml:space="preserve"> <data name="BgaVoidRateProcessor_Name" xml:space="preserve">
<value>BGA空洞率检测(自动)</value> <value>BGA空洞率检测(自动)</value>
</data> </data>
@@ -1463,8 +1443,6 @@
<data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve"> <data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve">
<value>轮廓线条粗细</value> <value>轮廓线条粗细</value>
</data> </data>
<!-- PointToLineProcessor -->
<data name="PointToLineProcessor_Name" xml:space="preserve"> <data name="PointToLineProcessor_Name" xml:space="preserve">
<value>点到直线距离</value> <value>点到直线距离</value>
</data> </data>
@@ -1489,16 +1467,12 @@
<data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve"> <data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve">
<value>绘制线条粗细</value> <value>绘制线条粗细</value>
</data> </data>
<!-- AngleMeasurementProcessor -->
<data name="AngleMeasurementProcessor_Name" xml:space="preserve"> <data name="AngleMeasurementProcessor_Name" xml:space="preserve">
<value>角度测量</value> <value>角度测量</value>
</data> </data>
<data name="AngleMeasurementProcessor_Description" xml:space="preserve"> <data name="AngleMeasurementProcessor_Description" xml:space="preserve">
<value>测量共端点两条射线的夹角</value> <value>测量共端点两条射线的夹角</value>
</data> </data>
<!-- VoidMeasurementProcessor -->
<data name="VoidMeasurementProcessor_Name" xml:space="preserve"> <data name="VoidMeasurementProcessor_Name" xml:space="preserve">
<value>空隙测量</value> <value>空隙测量</value>
</data> </data>
@@ -1571,4 +1545,262 @@
<data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve"> <data name="EmbossProcessor_GrayOffset_Desc" xml:space="preserve">
<value>平坦区域的灰度基底(128=中灰)</value> <value>平坦区域的灰度基底(128=中灰)</value>
</data> </data>
<data name="OrProcessor_Name" xml:space="preserve">
<value>或运算</value>
</data>
<data name="OrProcessor_Description" xml:space="preserve">
<value>对图像进行按位或运算,支持与固定值或运算,可用于图像合并和掩码操作</value>
</data>
<data name="OrProcessor_Value" xml:space="preserve">
<value>值</value>
</data>
<data name="OrProcessor_Value_Desc" xml:space="preserve">
<value>与图像每个像素进行OR运算的值(0-255</value>
</data>
<data name="DifferenceProcessor_Name" xml:space="preserve">
<value>差分运算</value>
</data>
<data name="DifferenceProcessor_Description" xml:space="preserve">
<value>对图像进行差分运算,支持水平、垂直和对角线差分,可用于边缘检测</value>
</data>
<data name="DifferenceProcessor_Direction" xml:space="preserve">
<value>方向</value>
</data>
<data name="DifferenceProcessor_Direction_Desc" xml:space="preserve">
<value>差分方向:Horizontal(水平)、Vertical(垂直)、Both(梯度幅值)</value>
</data>
<data name="DifferenceProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="DifferenceProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<data name="MultiplicationProcessor_Name" xml:space="preserve">
<value>乘法运算</value>
</data>
<data name="MultiplicationProcessor_Description" xml:space="preserve">
<value>对图像像素值进行乘法运算,常用于图像增强和对比度调整</value>
</data>
<data name="MultiplicationProcessor_Multiplier" xml:space="preserve">
<value>乘数</value>
</data>
<data name="MultiplicationProcessor_Multiplier_Desc" xml:space="preserve">
<value>像素值乘以此系数(0.1-10.0</value>
</data>
<data name="MultiplicationProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="MultiplicationProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<data name="IntegralProcessor_Name" xml:space="preserve">
<value>积分运算</value>
</data>
<data name="IntegralProcessor_Description" xml:space="preserve">
<value>计算积分图像(累加和),用于快速区域求和</value>
</data>
<data name="IntegralProcessor_Normalize" xml:space="preserve">
<value>归一化输出</value>
</data>
<data name="IntegralProcessor_Normalize_Desc" xml:space="preserve">
<value>将结果归一化到0-255范围</value>
</data>
<!-- 九点标定 -->
<data name="CalibrationToolTitle" xml:space="preserve">
<value>九点标定工具</value>
</data>
<data name="CalibrationLoadImage" xml:space="preserve">
<value>加载图像</value>
</data>
<data name="CalibrationLoadCsv" xml:space="preserve">
<value>从CSV加载</value>
</data>
<data name="CalibrationExecute" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="CalibrationSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="CalibrationLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="CalibrationShowWorld" xml:space="preserve">
<value>显示世界坐标</value>
</data>
<data name="CalibrationPointList" xml:space="preserve">
<value>标定点列表</value>
</data>
<data name="CalibrationPixelX" xml:space="preserve">
<value>像素X</value>
</data>
<data name="CalibrationPixelY" xml:space="preserve">
<value>像素Y</value>
</data>
<data name="CalibrationWorldX" xml:space="preserve">
<value>世界X</value>
</data>
<data name="CalibrationWorldY" xml:space="preserve">
<value>世界Y</value>
</data>
<data name="CalibrationStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="CalibrationStatusImageLoaded" xml:space="preserve">
<value>状态:图像已加载
{0}
右键点击图像查看坐标转换</value>
</data>
<data name="CalibrationStatusCsvLoaded" xml:space="preserve">
<value>状态:已从CSV加载 {0} 个标定点
{1}</value>
</data>
<data name="CalibrationStatusSuccess" xml:space="preserve">
<value>状态:标定成功!使用 {0} 个点</value>
</data>
<data name="CalibrationStatusFailed" xml:space="preserve">
<value>状态:标定失败</value>
</data>
<data name="CalibrationStatusSaved" xml:space="preserve">
<value>状态:标定文件已保存到
{0}</value>
</data>
<data name="CalibrationStatusLoaded" xml:space="preserve">
<value>状态:标定文件已加载
{0}</value>
</data>
<data name="CalibrationCoordinates" xml:space="preserve">
<value>像素坐标: ({0:F2}, {1:F2})
世界坐标: ({2:F2}, {3:F2})</value>
</data>
<data name="CalibrationErrorMinPoints" xml:space="preserve">
<value>至少需要4个标定点!</value>
</data>
<data name="CalibrationSuccessTitle" xml:space="preserve">
<value>成功</value>
</data>
<data name="CalibrationSuccessMessage" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="CalibrationSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="CalibrationLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="CalibrationLoadFailed" xml:space="preserve">
<value>加载失败!</value>
</data>
<!-- 棋盘格标定 -->
<data name="ChessboardToolTitle" xml:space="preserve">
<value>棋盘格畸变校正工具</value>
</data>
<data name="ChessboardAddImages" xml:space="preserve">
<value>添加图像</value>
</data>
<data name="ChessboardClearImages" xml:space="preserve">
<value>清空列表</value>
</data>
<data name="ChessboardCalibrate" xml:space="preserve">
<value>执行标定</value>
</data>
<data name="ChessboardSave" xml:space="preserve">
<value>保存标定</value>
</data>
<data name="ChessboardLoad" xml:space="preserve">
<value>加载标定</value>
</data>
<data name="ChessboardUndistort" xml:space="preserve">
<value>校正图像</value>
</data>
<data name="ChessboardParameters" xml:space="preserve">
<value>棋盘格参数</value>
</data>
<data name="ChessboardWidth" xml:space="preserve">
<value>内角点宽度:</value>
</data>
<data name="ChessboardHeight" xml:space="preserve">
<value>内角点高度:</value>
</data>
<data name="ChessboardSquareSize" xml:space="preserve">
<value>方格尺寸(mm):</value>
</data>
<data name="ChessboardImageList" xml:space="preserve">
<value>标定图像列表</value>
</data>
<data name="ChessboardStatusInfo" xml:space="preserve">
<value>状态信息</value>
</data>
<data name="ChessboardStatusReady" xml:space="preserve">
<value>就绪</value>
</data>
<data name="ChessboardStatusAdded" xml:space="preserve">
<value>已添加 {0} 张图像</value>
</data>
<data name="ChessboardStatusCleared" xml:space="preserve">
<value>已清空图像列表</value>
</data>
<data name="ChessboardStatusCalibrating" xml:space="preserve">
<value>正在标定,请稍候...</value>
</data>
<data name="ChessboardStatusSuccess" xml:space="preserve">
<value>标定成功!
总体重投影误差: {0:F4} 像素
{1}</value>
</data>
<data name="ChessboardStatusFailed" xml:space="preserve">
<value>标定失败: {0}</value>
</data>
<data name="ChessboardStatusSaved" xml:space="preserve">
<value>标定已保存:
{0}</value>
</data>
<data name="ChessboardStatusLoaded" xml:space="preserve">
<value>标定已加载:
{0}</value>
</data>
<data name="ChessboardStatusUndistorted" xml:space="preserve">
<value>已校正图像:
{0}</value>
</data>
<data name="ChessboardStatusImageError" xml:space="preserve">
<value>图像 {0}
重投影误差: {1:F4} 像素</value>
</data>
<data name="ChessboardProgressPreparing" xml:space="preserve">
<value>准备标定...</value>
</data>
<data name="ChessboardProgressDetecting" xml:space="preserve">
<value>检测角点 ({0}/{1})</value>
</data>
<data name="ChessboardProgressCalibrating" xml:space="preserve">
<value>执行相机标定...</value>
</data>
<data name="ChessboardProgressCalculating" xml:space="preserve">
<value>计算重投影误差 ({0}/{1})</value>
</data>
<data name="ChessboardProgressComplete" xml:space="preserve">
<value>标定完成</value>
</data>
<data name="ChessboardProgressFailed" xml:space="preserve">
<value>标定失败</value>
</data>
<data name="ChessboardErrorMinImages" xml:space="preserve">
<value>至少需要3张图像!</value>
</data>
<data name="ChessboardErrorInsufficientValid" xml:space="preserve">
<value>有效图像不足,需要至少3张,当前{0}张</value>
</data>
<data name="ChessboardSaveSuccess" xml:space="preserve">
<value>保存成功!</value>
</data>
<data name="ChessboardLoadSuccess" xml:space="preserve">
<value>加载成功!</value>
</data>
<data name="ChessboardCalibrationComplete" xml:space="preserve">
<value>标定完成!</value>
</data>
<data name="ChessboardImageError" xml:space="preserve">
<value>图像{0}: {1:F4} 像素</value>
</data>
</root> </root>