re-render frame on active calibration
This commit is contained in:
@@ -130,17 +130,7 @@ public partial class CalibrationWindowViewModel : ObservableObject, IDisposable
|
|||||||
_lastFrame?.Dispose();
|
_lastFrame?.Dispose();
|
||||||
_lastFrame = frame;
|
_lastFrame = frame;
|
||||||
|
|
||||||
var displayFrame = frame;
|
var bitmap = RenderFrame(frame);
|
||||||
if (ApplyCalibration && _calibCameraMatrix != null && _calibDistCoeffs != null)
|
|
||||||
{
|
|
||||||
displayFrame = new Mat();
|
|
||||||
Cv2.Undistort(frame, displayFrame, _calibCameraMatrix, _calibDistCoeffs);
|
|
||||||
}
|
|
||||||
|
|
||||||
var bitmap = ImageConverter.MatToAvaloniaBitmap(displayFrame);
|
|
||||||
|
|
||||||
if (displayFrame != frame)
|
|
||||||
displayFrame.Dispose();
|
|
||||||
|
|
||||||
await Dispatcher.UIThread.InvokeAsync(() =>
|
await Dispatcher.UIThread.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
@@ -162,6 +152,40 @@ public partial class CalibrationWindowViewModel : ObservableObject, IDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Avalonia.Media.Imaging.Bitmap RenderFrame(Mat frame)
|
||||||
|
{
|
||||||
|
var displayFrame = frame;
|
||||||
|
if (ApplyCalibration && _calibCameraMatrix != null && _calibDistCoeffs != null)
|
||||||
|
{
|
||||||
|
displayFrame = new Mat();
|
||||||
|
Cv2.Undistort(frame, displayFrame, _calibCameraMatrix, _calibDistCoeffs);
|
||||||
|
}
|
||||||
|
|
||||||
|
var bitmap = ImageConverter.MatToAvaloniaBitmap(displayFrame);
|
||||||
|
|
||||||
|
if (displayFrame != frame)
|
||||||
|
displayFrame.Dispose();
|
||||||
|
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
partial void OnApplyCalibrationChanged(bool value)
|
||||||
|
{
|
||||||
|
if (_lastFrame == null || _lastFrame.Empty()) return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bitmap = RenderFrame(_lastFrame);
|
||||||
|
var old = PreviewImage;
|
||||||
|
PreviewImage = bitmap;
|
||||||
|
old?.Dispose();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
StatusText = $"Preview error: {ex.Message}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadCalibrationMats(Models.CalibrationData data)
|
private void LoadCalibrationMats(Models.CalibrationData data)
|
||||||
{
|
{
|
||||||
_calibCameraMatrix?.Dispose();
|
_calibCameraMatrix?.Dispose();
|
||||||
|
|||||||
Reference in New Issue
Block a user