DeepObjectDetectClass.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using MvvmScaffoldFrame48.DLL.ImageAlgorithm;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Input;
  10. using System.Windows.Media.Imaging;
  11. using System.Xml.Linq;
  12. namespace MvvmScaffoldFrame48.ViewModel.ViewModel
  13. {
  14. public class DeepObjectDetectClass : BaseViewModel
  15. {
  16. #region 界面绑定属性
  17. private BitmapImage _showImage;
  18. public BitmapImage ShowImage
  19. {
  20. get { return _showImage; }
  21. set
  22. {
  23. if (_showImage != value)
  24. {
  25. _showImage = value;
  26. OnPropertyChanged(nameof(ShowImage));
  27. }
  28. }
  29. }
  30. #endregion
  31. #region 界面绑定事件
  32. public ICommand TestCommand{ get; set; }
  33. #endregion
  34. #region 属性
  35. private CPUDeepObjectDetectClass cPUDeepObject = new CPUDeepObjectDetectClass();
  36. #endregion
  37. #region 绑定用Action方法
  38. public void Test(object obj)
  39. {
  40. // 创建一个 Bitmap 对象
  41. Bitmap bitmap = new Bitmap("D:\\work\\MvvmScaffoldFrame48\\MvvmScaffoldFrame48\\MvvmScaffoldFrame48\\testfile\\testimage\\2025-08-04-13-14-00-655.jpg");
  42. cPUDeepObject.LoadImage(bitmap);
  43. cPUDeepObject.LoadDeepModel("D:\\work\\MvvmScaffoldFrame48\\MvvmScaffoldFrame48\\MvvmScaffoldFrame48\\testfile\\model\\Detect_20250818T1328175385.bin");
  44. var result = cPUDeepObject.RunDetect();
  45. // 将 Bitmap 转换为 BitmapImage
  46. BitmapImage bitmapImage = ConvertToBitmapImage(bitmap);
  47. ShowImage = bitmapImage;
  48. }
  49. #endregion
  50. #region 绑定用Predicate方法
  51. private bool CanTrue(object obj)
  52. {
  53. return true;
  54. }
  55. private bool CanFalse(object obj)
  56. {
  57. return false;
  58. }
  59. #endregion
  60. #region 其他方法
  61. public DeepObjectDetectClass()
  62. {
  63. TestCommand = new RelayCommand(Test, CanTrue);
  64. }
  65. // Bitmap 转 BitmapImage 的辅助方法
  66. private BitmapImage ConvertToBitmapImage(Bitmap bitmap)
  67. {
  68. using (MemoryStream memory = new MemoryStream())
  69. {
  70. bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Png);
  71. memory.Position = 0;
  72. var bitmapImage = new BitmapImage();
  73. bitmapImage.BeginInit();
  74. bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
  75. bitmapImage.DecodePixelWidth = 1200; // 设置目标分辨率宽度
  76. bitmapImage.DecodePixelHeight = 600; // 保持宽高比
  77. bitmapImage.StreamSource = memory;
  78. bitmapImage.EndInit();
  79. return bitmapImage;
  80. }
  81. }
  82. #endregion
  83. }
  84. }