tab3.page.html 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <ion-header [translucent]="true">
  2. <ion-toolbar>
  3. <ion-title class="header-title">陶瓷识别</ion-title>
  4. </ion-toolbar>
  5. </ion-header>
  6. <ion-content [fullscreen]="true" style="--background: url('/assets/images/background.jpg') no-repeat center/cover;">
  7. <div class="image-container" [ngClass]="{ 'destroyed': isDestroyed }">
  8. <!-- 背景框 -->
  9. <div class="background-frame" *ngIf="!isDestroyed">
  10. <!-- 图片显示区域 -->
  11. <img [src]="imageSrc" alt="Selected Image" class="image" *ngIf="!isDestroyed && !isCameraMode && imageSrc" />
  12. <!-- 视频流显示 -->
  13. <video #video *ngIf="!isDestroyed && isCameraMode && !imageCaptured && cameraAvailable" autoplay muted></video>
  14. <!-- 占位文本 -->
  15. <p class="placeholder-text" *ngIf="!isDestroyed && !imageSrc && !isCameraMode">No Image Selected</p>
  16. <p class="placeholder-text" *ngIf="!isDestroyed && isCameraMode && (!cameraAvailable || imageCaptured)">Camera not available</p>
  17. </div>
  18. <!-- 切换图标 -->
  19. <ion-button fill="clear" class="toggle-button" *ngIf="!isDestroyed" (click)="toggleMode()">
  20. <ion-icon [name]="isCameraMode ? 'image' : 'camera'"></ion-icon>
  21. </ion-button>
  22. <!-- 切换卷轴按钮 -->
  23. <ion-button fill="solid" class="toggle-roll-button" (click)="toggleBackground()">
  24. <ion-icon [name]="isDestroyed ? 'chevron-down-outline' : 'chevron-up-outline'"></ion-icon>
  25. </ion-button>
  26. </div>
  27. <!-- 上传图片按钮 -->
  28. <div *ngIf="!isCameraMode" class="upload-container">
  29. <ion-button class="primary-button" (click)="selectImage()">上传图片</ion-button>
  30. <ion-button class="secondary-button" (click)="startDetection()">开始检测</ion-button>
  31. <input type="file" hidden #fileInput (change)="onFileSelected($event)" />
  32. </div>
  33. <!-- 调用摄像头按钮 -->
  34. <div *ngIf="isCameraMode" class="camera-container">
  35. <ion-button class="primary-button" (click)="startCamera()">打开摄像头</ion-button>
  36. <ion-button class="secondary-button" (click)="startDetection()">开始检测</ion-button>
  37. </div>
  38. <!-- Canvas 用于捕获图像 -->
  39. <canvas #canvas hidden></canvas>
  40. <!-- 分隔线 -->
  41. <hr class="divider" />
  42. <!-- 动态填充表格 -->
  43. <div class="table-container">
  44. <table>
  45. <thead>
  46. <tr>
  47. <th>序号</th>
  48. <th>识别结果</th>
  49. <th>识别置信度</th>
  50. <th>详情</th>
  51. </tr>
  52. </thead>
  53. <tbody>
  54. <tr *ngFor="let item of recognitionResults; let i = index">
  55. <td>{{ i + 1 }}</td>
  56. <td>{{ item.result }}</td>
  57. <td>{{ item.confidence }}</td>
  58. <td>
  59. <ion-button size="small" fill="outline" (click)="viewDetails(item)">查看</ion-button>
  60. </td>
  61. </tr>
  62. </tbody>
  63. </table>
  64. </div>
  65. </ion-content>