forked from amkovkov/GranuSightSoftware2
feat: calibration models logic mistaces
This commit is contained in:
@@ -223,28 +223,24 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
// Если это новая запись
|
||||
if (SelectedRecord is null)
|
||||
{
|
||||
// Если это новая запись, то копируем её
|
||||
// Копируем её
|
||||
var newRecord = CopyRecord(EditingRecord);
|
||||
|
||||
// Для каждого вектора
|
||||
for (int i = 0; i < newRecord.VectorRecords.Count(); i++)
|
||||
{
|
||||
var vector = newRecord.VectorRecords[i];
|
||||
// Если вектор есть в базе данных, то пропускаем его
|
||||
if (_context.Entry(vector).State is not EntityState.Detached)
|
||||
continue;
|
||||
|
||||
// Если вектора нет в базе данных, то добавляем его в базу
|
||||
// Добавляем вектор в базу
|
||||
var attachedRecord = _context.VectorRecords.Add(vector);
|
||||
// Удаляем отвязанное от базы данных изображение из записи
|
||||
// Удаляем отвязанный от базы данных вектор из записи
|
||||
newRecord.VectorRecords.RemoveAt(i);
|
||||
// Добавляем привязанное изображение к записи
|
||||
// Добавляем привязанный к базе данных вектор в запись
|
||||
newRecord.VectorRecords.Insert(i, attachedRecord.Entity);
|
||||
}
|
||||
// Если записи нет в базе данных
|
||||
if (_context.Entry(newRecord).State is EntityState.Detached)
|
||||
|
||||
{
|
||||
// То добавляем её в базу
|
||||
// То добавляем запись в базу
|
||||
var attachedRecord = _context.SampleRecords.Add(newRecord);
|
||||
// Заменяем текущую запись на привязанную к базе данных
|
||||
newRecord = attachedRecord.Entity;
|
||||
@@ -273,35 +269,7 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
SelectedRecord.MixtureActualRate = EditingRecord.MixtureActualRate;
|
||||
SelectedRecord.MeasuredContent = EditingRecord.MeasuredContent;
|
||||
SelectedRecord.Image = EditingRecord.Image;
|
||||
|
||||
// Удаляем старые векторы в записи
|
||||
{
|
||||
// Находим векторы которые нужно удалить -
|
||||
// те которые есть в выбранной записи, но нет в редактируемой
|
||||
var vectorsToRemove = SelectedRecord.VectorRecords
|
||||
.Where(e => EditingRecord.VectorRecords.All(i => i.Id != e.Id))
|
||||
.ToList();
|
||||
|
||||
// Удаляем старые векторы
|
||||
foreach (var image in vectorsToRemove)
|
||||
SelectedRecord.VectorRecords.Remove(image);
|
||||
|
||||
// Для каждого вектора в редактируемой записи
|
||||
foreach (var editedImage in EditingRecord.VectorRecords)
|
||||
{
|
||||
// Находим изображение в выбранной записи (оно будет привязано к базе данных)
|
||||
var existing = SelectedRecord.VectorRecords
|
||||
.FirstOrDefault(i => i.Id == editedImage.Id);
|
||||
|
||||
// Если вектор не найден
|
||||
// Копируем вектор в выбранную запись
|
||||
if (existing is null)
|
||||
SelectedRecord.VectorRecords.Add(CopyRecord(editedImage));
|
||||
// Если вектор найден
|
||||
// Изменяем данные вектора на данные вектора из редактируемой записи
|
||||
else
|
||||
existing.Values = editedImage.Values;
|
||||
}
|
||||
SelectedRecord.VectorRecords = EditingRecord.VectorRecords;
|
||||
|
||||
// Для каждого вектора в выбранной записи
|
||||
for (int i = 0; i < SelectedRecord.VectorRecords.Count(); i++)
|
||||
@@ -311,27 +279,13 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
if (_context.Entry(vector).State is not EntityState.Detached)
|
||||
continue;
|
||||
|
||||
// Если изображения нет в базе данных, то добавляем его в базу
|
||||
// Если вектора нет в базе данных, то добавляем его в базу
|
||||
var attachedRecord = _context.VectorRecords.Add(vector);
|
||||
// Удаляем отвязанное от базы данных изображение из записи
|
||||
// Удаляем отвязанный от базы данных вектор из записи
|
||||
SelectedRecord.VectorRecords.RemoveAt(i);
|
||||
// Добавляем привязанное изображение к записи
|
||||
// Добавляем привязанный вектор к записи
|
||||
SelectedRecord.VectorRecords.Insert(i, attachedRecord.Entity);
|
||||
}
|
||||
}
|
||||
|
||||
// Если записи нет в базе данных
|
||||
if (_context.Entry(SelectedRecord).State is EntityState.Detached)
|
||||
{
|
||||
// То добавляем её в базу
|
||||
var attachedRecord = _context.SampleRecords.Add(SelectedRecord);
|
||||
// Находим текущую запись в списке
|
||||
var index = Records.IndexOf(SelectedRecord);
|
||||
// Заменяем её в списке на привязанную к базе данных
|
||||
Records[index] = attachedRecord.Entity;
|
||||
// Заменяем выбранную запись на привязанную
|
||||
SelectedRecord = attachedRecord.Entity;
|
||||
}
|
||||
|
||||
// Сохраняем изменения в базе данных
|
||||
_context.SaveChanges();
|
||||
@@ -433,6 +387,8 @@ public partial class SampleCalibrationViewModel : ViewModelBase
|
||||
{
|
||||
// Распаковываем результат
|
||||
var (avgImage, roi, features) = result.Value;
|
||||
_logger.LogInformation($"Длинна вектора признаков: {features.Count()}");
|
||||
|
||||
// Обрабатываем среднее изображение
|
||||
avgImage = new OpenCvSharp.Mat(avgImage, roi);
|
||||
OpenCvSharp.Cv2.Resize(
|
||||
|
||||
@@ -206,28 +206,24 @@ public partial class SeparatorCalibrationViewModel : ViewModelBase
|
||||
// Если это новая запись
|
||||
if (SelectedRecord is null)
|
||||
{
|
||||
// Если это новая запись, то копируем её
|
||||
// Копируем её
|
||||
var newRecord = CopyRecord(EditingRecord);
|
||||
|
||||
// Для каждого вектора
|
||||
for (int i = 0; i < newRecord.VectorRecords.Count(); i++)
|
||||
{
|
||||
var vector = newRecord.VectorRecords[i];
|
||||
// Если вектор есть в базе данных, то пропускаем его
|
||||
if (_context.Entry(vector).State is not EntityState.Detached)
|
||||
continue;
|
||||
|
||||
// Если вектора нет в базе данных, то добавляем его в базу
|
||||
// Добавляем вектор в базу
|
||||
var attachedRecord = _context.VectorRecords.Add(vector);
|
||||
// Удаляем отвязанное от базы данных изображение из записи
|
||||
// Удаляем отвязанный от базы данных вектор из записи
|
||||
newRecord.VectorRecords.RemoveAt(i);
|
||||
// Добавляем привязанное изображение к записи
|
||||
// Добавляем привязанный к базе данных вектор в запись
|
||||
newRecord.VectorRecords.Insert(i, attachedRecord.Entity);
|
||||
}
|
||||
// Если записи нет в базе данных
|
||||
if (_context.Entry(newRecord).State is EntityState.Detached)
|
||||
|
||||
{
|
||||
// То добавляем её в базу
|
||||
// То добавляем запись в базу
|
||||
var attachedRecord = _context.SeparatorRecords.Add(newRecord);
|
||||
// Заменяем текущую запись на привязанную к базе данных
|
||||
newRecord = attachedRecord.Entity;
|
||||
@@ -247,35 +243,7 @@ public partial class SeparatorCalibrationViewModel : ViewModelBase
|
||||
SelectedRecord.Type = EditingRecord.Type;
|
||||
SelectedRecord.Batch = EditingRecord.Batch;
|
||||
SelectedRecord.Image = EditingRecord.Image;
|
||||
|
||||
// Удаляем старые векторы в записи
|
||||
{
|
||||
// Находим векторы которые нужно удалить -
|
||||
// те которые есть в выбранной записи, но нет в редактируемой
|
||||
var vectorsToRemove = SelectedRecord.VectorRecords
|
||||
.Where(e => EditingRecord.VectorRecords.All(i => i.Id != e.Id))
|
||||
.ToList();
|
||||
|
||||
// Удаляем старые векторы
|
||||
foreach (var image in vectorsToRemove)
|
||||
SelectedRecord.VectorRecords.Remove(image);
|
||||
|
||||
// Для каждого вектора в редактируемой записи
|
||||
foreach (var editedImage in EditingRecord.VectorRecords)
|
||||
{
|
||||
// Находим изображение в выбранной записи (оно будет привязано к базе данных)
|
||||
var existing = SelectedRecord.VectorRecords
|
||||
.FirstOrDefault(i => i.Id == editedImage.Id);
|
||||
|
||||
// Если вектор не найден
|
||||
// Копируем вектор в выбранную запись
|
||||
if (existing is null)
|
||||
SelectedRecord.VectorRecords.Add(CopyRecord(editedImage));
|
||||
// Если вектор найден
|
||||
// Изменяем данные вектора на данные вектора из редактируемой записи
|
||||
else
|
||||
existing.Values = editedImage.Values;
|
||||
}
|
||||
SelectedRecord.VectorRecords = EditingRecord.VectorRecords;
|
||||
|
||||
// Для каждого вектора в выбранной записи
|
||||
for (int i = 0; i < SelectedRecord.VectorRecords.Count(); i++)
|
||||
@@ -285,27 +253,13 @@ public partial class SeparatorCalibrationViewModel : ViewModelBase
|
||||
if (_context.Entry(vector).State is not EntityState.Detached)
|
||||
continue;
|
||||
|
||||
// Если изображения нет в базе данных, то добавляем его в базу
|
||||
// Если вектора нет в базе данных, то добавляем его в базу
|
||||
var attachedRecord = _context.VectorRecords.Add(vector);
|
||||
// Удаляем отвязанное от базы данных изображение из записи
|
||||
// Удаляем отвязанный от базы данных вектор из записи
|
||||
SelectedRecord.VectorRecords.RemoveAt(i);
|
||||
// Добавляем привязанное изображение к записи
|
||||
// Добавляем привязанный вектор к записи
|
||||
SelectedRecord.VectorRecords.Insert(i, attachedRecord.Entity);
|
||||
}
|
||||
}
|
||||
|
||||
// Если записи нет в базе данных
|
||||
if (_context.Entry(SelectedRecord).State is EntityState.Detached)
|
||||
{
|
||||
// То добавляем её в базу
|
||||
var attachedRecord = _context.SeparatorRecords.Add(SelectedRecord);
|
||||
// Находим текущую запись в списке
|
||||
var index = Records.IndexOf(SelectedRecord);
|
||||
// Заменяем её в списке на привязанную к базе данных
|
||||
Records[index] = attachedRecord.Entity;
|
||||
// Заменяем выбранную запись на привязанную
|
||||
SelectedRecord = attachedRecord.Entity;
|
||||
}
|
||||
|
||||
// Сохраняем изменения в базе данных
|
||||
_context.SaveChanges();
|
||||
@@ -407,6 +361,7 @@ public partial class SeparatorCalibrationViewModel : ViewModelBase
|
||||
{
|
||||
// Распаковываем результат
|
||||
var (avgImage, roi, features) = result.Value;
|
||||
_logger.LogInformation($"Длинна вектора признаков: {features.Count()}");
|
||||
// Обрабатываем среднее изображение
|
||||
avgImage = new OpenCvSharp.Mat(avgImage, roi);
|
||||
OpenCvSharp.Cv2.Resize(
|
||||
|
||||
Reference in New Issue
Block a user