simpleverso commited on
Commit
097981a
·
verified ·
1 Parent(s): 44af292

I cant see the camera now

Browse files
Files changed (1) hide show
  1. index.html +41 -33
index.html CHANGED
@@ -106,8 +106,23 @@
106
  </button>
107
  </div>
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  <!-- Collage Section in the center -->
110
- <div class="collage-container p-6 rounded-2xl">
111
  <div class="flex justify-between items-center mb-4">
112
  <h2 class="text-xl font-semibold flex items-center">
113
  <i data-feather="grid" class="mr-2 text-purple-400"></i> Dynamic Collage
@@ -187,49 +202,40 @@
187
 
188
  // Camera setup
189
  let stream = null;
190
- startCameraBtn.addEventListener('click', async () => {
191
- try {
192
- stream = await navigator.mediaDevices.getUserMedia({ video: true });
193
- video.srcObject = stream;
194
- startCameraBtn.innerHTML = '<i data-feather="video-off" class="mr-2"></i> Stop Camera';
195
- startCameraBtn.classList.remove('bg-blue-600', 'hover:bg-blue-700');
196
- startCameraBtn.classList.add('bg-red-600', 'hover:bg-red-700');
197
- feather.replace();
198
- } catch (err) {
199
- console.error("Error accessing camera:", err);
200
- predictionText.textContent = "Error accessing camera. Please check permissions.";
201
- predictionText.classList.add('text-red-400');
202
- }
203
- });
204
-
205
- startCameraBtn.addEventListener('click', () => {
206
- if (stream) {
207
- stream.getTracks().forEach(track => track.stop());
208
- stream = null;
209
- video.srcObject = null;
210
- startCameraBtn.innerHTML = '<i data-feather="video" class="mr-2"></i> Start Camera';
211
- startCameraBtn.classList.remove('bg-red-600', 'hover:bg-red-700');
212
- startCameraBtn.classList.add('bg-blue-600', 'hover:bg-blue-700');
213
- feather.replace();
214
- }
215
- });
216
 
217
  // Toggle camera view
218
- cameraToggle.addEventListener('click', () => {
219
  const cameraView = document.getElementById('camera-view');
220
  if (cameraView.classList.contains('hidden')) {
221
- cameraView.classList.remove('hidden');
222
- cameraToggle.innerHTML = '<i data-feather="x" class="mb-2 text-blue-400" size="32"></i><span class="text-lg font-semibold">Close Camera</span>';
 
 
 
 
 
 
 
 
 
 
223
  } else {
 
 
 
 
 
 
224
  cameraView.classList.add('hidden');
225
  cameraToggle.innerHTML = '<i data-feather="camera" class="mb-2 text-blue-400" size="32"></i><span class="text-lg font-semibold">Open Camera</span>';
 
226
  }
227
- feather.replace();
228
  });
 
229
  // Load COCO-SSD model
230
  let model;
231
  cocoSsd.load().then(loadedModel => {
232
- model = loadedModel;
233
  console.log("COCO-SSD model loaded");
234
  }).catch(err => {
235
  console.error("Error loading model:", err);
@@ -240,7 +246,7 @@ model = loadedModel;
240
  // Capture image and process with ResNet (COCO-SSD)
241
  captureBtn.addEventListener('click', async () => {
242
  if (!stream) {
243
- predictionText.textContent = "Please start the camera first";
244
  predictionText.classList.add('text-yellow-400');
245
  return;
246
  }
@@ -290,6 +296,7 @@ model = loadedModel;
290
  captureBtn.classList.remove('opacity-50', 'cursor-not-allowed');
291
  }
292
  });
 
293
  // Add multiple images to collage with dynamic movement
294
  function addToCollage(object) {
295
  // Remove placeholder if it exists
@@ -320,6 +327,7 @@ model = loadedModel;
320
  collage.appendChild(collageItem);
321
  }
322
  }
 
323
  // Clear collage
324
  clearCollageBtn.addEventListener('click', () => {
325
  collage.innerHTML = `
 
106
  </button>
107
  </div>
108
 
109
+ <!-- Camera View (Hidden by default) -->
110
+ <div id="camera-view" class="hidden flex justify-center mb-8">
111
+ <div class="camera-container relative">
112
+ <video id="video" autoplay playsinline class="w-full max-w-2xl rounded-lg"></video>
113
+ <div id="loading" class="absolute inset-0 bg-black/70 flex items-center justify-center hidden">
114
+ <div class="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-blue-500"></div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+
119
+ <!-- Prediction Display -->
120
+ <div class="text-center mb-8">
121
+ <p id="prediction-text" class="text-lg">Point your camera at an object and capture to begin</p>
122
+ </div>
123
+
124
  <!-- Collage Section in the center -->
125
+ <div class="collage-container p-6 rounded-2xl">
126
  <div class="flex justify-between items-center mb-4">
127
  <h2 class="text-xl font-semibold flex items-center">
128
  <i data-feather="grid" class="mr-2 text-purple-400"></i> Dynamic Collage
 
202
 
203
  // Camera setup
204
  let stream = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
 
206
  // Toggle camera view
207
+ cameraToggle.addEventListener('click', async () => {
208
  const cameraView = document.getElementById('camera-view');
209
  if (cameraView.classList.contains('hidden')) {
210
+ // Open camera
211
+ try {
212
+ stream = await navigator.mediaDevices.getUserMedia({ video: true });
213
+ video.srcObject = stream;
214
+ cameraView.classList.remove('hidden');
215
+ cameraToggle.innerHTML = '<i data-feather="x" class="mb-2 text-blue-400" size="32"></i><span class="text-lg font-semibold">Close Camera</span>';
216
+ feather.replace();
217
+ } catch (err) {
218
+ console.error("Error accessing camera:", err);
219
+ predictionText.textContent = "Error accessing camera. Please check permissions.";
220
+ predictionText.classList.add('text-red-400');
221
+ }
222
  } else {
223
+ // Close camera
224
+ if (stream) {
225
+ stream.getTracks().forEach(track => track.stop());
226
+ stream = null;
227
+ }
228
+ video.srcObject = null;
229
  cameraView.classList.add('hidden');
230
  cameraToggle.innerHTML = '<i data-feather="camera" class="mb-2 text-blue-400" size="32"></i><span class="text-lg font-semibold">Open Camera</span>';
231
+ feather.replace();
232
  }
 
233
  });
234
+
235
  // Load COCO-SSD model
236
  let model;
237
  cocoSsd.load().then(loadedModel => {
238
+ model = loadedModel;
239
  console.log("COCO-SSD model loaded");
240
  }).catch(err => {
241
  console.error("Error loading model:", err);
 
246
  // Capture image and process with ResNet (COCO-SSD)
247
  captureBtn.addEventListener('click', async () => {
248
  if (!stream) {
249
+ predictionText.textContent = "Please open the camera first";
250
  predictionText.classList.add('text-yellow-400');
251
  return;
252
  }
 
296
  captureBtn.classList.remove('opacity-50', 'cursor-not-allowed');
297
  }
298
  });
299
+
300
  // Add multiple images to collage with dynamic movement
301
  function addToCollage(object) {
302
  // Remove placeholder if it exists
 
327
  collage.appendChild(collageItem);
328
  }
329
  }
330
+
331
  // Clear collage
332
  clearCollageBtn.addEventListener('click', () => {
333
  collage.innerHTML = `