Spaces:
Running
Running
Update index.html
Browse files- index.html +51 -21
index.html
CHANGED
@@ -120,7 +120,7 @@
|
|
120 |
})()"
|
121 |
></canvas>
|
122 |
</div>
|
123 |
-
|
124 |
|
125 |
<div
|
126 |
x-show="activeTab === 'upload' && !imageUrl"
|
@@ -175,12 +175,12 @@
|
|
175 |
>
|
176 |
<div class="preview-area">
|
177 |
<video
|
178 |
-
x-ref="
|
179 |
autoplay
|
180 |
playsinline
|
181 |
class="hidden"
|
182 |
></video>
|
183 |
-
<canvas x-ref="
|
184 |
|
185 |
<div class="preview-placeholder">
|
186 |
<svg
|
@@ -207,18 +207,18 @@
|
|
207 |
</div>
|
208 |
|
209 |
<div class="btn-group">
|
210 |
-
<button @click="
|
211 |
Start Camera
|
212 |
</button>
|
213 |
<button
|
214 |
-
@click="
|
215 |
class="btn btn-primary"
|
216 |
:disabled="!cameraActive"
|
217 |
>
|
218 |
Capture
|
219 |
</button>
|
220 |
<button
|
221 |
-
@click="
|
222 |
class="btn btn-secondary"
|
223 |
:disabled="!cameraActive"
|
224 |
>
|
@@ -495,7 +495,7 @@
|
|
495 |
>
|
496 |
<div class="preview-area">
|
497 |
<video
|
498 |
-
x-ref="
|
499 |
autoplay
|
500 |
playsinline
|
501 |
class="hidden"
|
@@ -527,18 +527,18 @@
|
|
527 |
</div>
|
528 |
|
529 |
<div class="btn-group">
|
530 |
-
<button @click="
|
531 |
Start Camera
|
532 |
</button>
|
533 |
<button
|
534 |
-
@click="
|
535 |
class="btn btn-primary"
|
536 |
:disabled="!cameraActive"
|
537 |
>
|
538 |
Capture
|
539 |
</button>
|
540 |
<button
|
541 |
-
@click="
|
542 |
class="btn btn-secondary"
|
543 |
:disabled="!cameraActive"
|
544 |
>
|
@@ -941,23 +941,35 @@
|
|
941 |
this.clearResults();
|
942 |
},
|
943 |
|
944 |
-
async
|
945 |
try {
|
946 |
const stream = await navigator.mediaDevices.getUserMedia({
|
947 |
video: true,
|
948 |
});
|
949 |
-
this.$refs.
|
950 |
-
this.$refs.
|
951 |
this.cameraActive = true;
|
952 |
} catch (err) {
|
953 |
console.error("Error accessing camera:", err);
|
954 |
alert("Could not access camera. Please check permissions.");
|
955 |
}
|
956 |
},
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
961 |
canvas.width = video.videoWidth;
|
962 |
canvas.height = video.videoHeight;
|
963 |
canvas.getContext("2d").drawImage(video, 0, 0);
|
@@ -965,13 +977,31 @@
|
|
965 |
this.imageUrl = canvas.toDataURL("image/png");
|
966 |
this.clearResults();
|
967 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
|
969 |
-
|
970 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
971 |
if (stream) {
|
972 |
stream.getTracks().forEach((track) => track.stop());
|
973 |
-
this.$refs.
|
974 |
-
this.$refs.
|
975 |
this.cameraActive = false;
|
976 |
}
|
977 |
},
|
|
|
120 |
})()"
|
121 |
></canvas>
|
122 |
</div>
|
123 |
+
<canvas id="canvasObjdet" x-ref="canvasObjdet" style="visibility: hidden;"></canvas>
|
124 |
|
125 |
<div
|
126 |
x-show="activeTab === 'upload' && !imageUrl"
|
|
|
175 |
>
|
176 |
<div class="preview-area">
|
177 |
<video
|
178 |
+
x-ref="videoObjdet"
|
179 |
autoplay
|
180 |
playsinline
|
181 |
class="hidden"
|
182 |
></video>
|
183 |
+
<canvas x-ref="canvasOcr" class="hidden"></canvas>
|
184 |
|
185 |
<div class="preview-placeholder">
|
186 |
<svg
|
|
|
207 |
</div>
|
208 |
|
209 |
<div class="btn-group">
|
210 |
+
<button @click="startCameraObjdet" class="btn btn-primary">
|
211 |
Start Camera
|
212 |
</button>
|
213 |
<button
|
214 |
+
@click="captureImageObjdet"
|
215 |
class="btn btn-primary"
|
216 |
:disabled="!cameraActive"
|
217 |
>
|
218 |
Capture
|
219 |
</button>
|
220 |
<button
|
221 |
+
@click="stopCameraObjdet"
|
222 |
class="btn btn-secondary"
|
223 |
:disabled="!cameraActive"
|
224 |
>
|
|
|
495 |
>
|
496 |
<div class="preview-area">
|
497 |
<video
|
498 |
+
x-ref="videoOcr"
|
499 |
autoplay
|
500 |
playsinline
|
501 |
class="hidden"
|
|
|
527 |
</div>
|
528 |
|
529 |
<div class="btn-group">
|
530 |
+
<button @click="startCameraOcr" class="btn btn-primary">
|
531 |
Start Camera
|
532 |
</button>
|
533 |
<button
|
534 |
+
@click="captureImageOcr"
|
535 |
class="btn btn-primary"
|
536 |
:disabled="!cameraActive"
|
537 |
>
|
538 |
Capture
|
539 |
</button>
|
540 |
<button
|
541 |
+
@click="stopCameraOcr"
|
542 |
class="btn btn-secondary"
|
543 |
:disabled="!cameraActive"
|
544 |
>
|
|
|
941 |
this.clearResults();
|
942 |
},
|
943 |
|
944 |
+
async startCameraObjdet() {
|
945 |
try {
|
946 |
const stream = await navigator.mediaDevices.getUserMedia({
|
947 |
video: true,
|
948 |
});
|
949 |
+
this.$refs.videoObjdet.srcObject = stream;
|
950 |
+
this.$refs.videoObjdet.classList.remove("hidden");
|
951 |
this.cameraActive = true;
|
952 |
} catch (err) {
|
953 |
console.error("Error accessing camera:", err);
|
954 |
alert("Could not access camera. Please check permissions.");
|
955 |
}
|
956 |
},
|
957 |
+
async startCameraOcr() {
|
958 |
+
try {
|
959 |
+
const stream = await navigator.mediaDevices.getUserMedia({
|
960 |
+
video: true,
|
961 |
+
});
|
962 |
+
this.$refs.videoOcr.srcObject = stream;
|
963 |
+
this.$refs.videoOcr.classList.remove("hidden");
|
964 |
+
this.cameraActive = true;
|
965 |
+
} catch (err) {
|
966 |
+
console.error("Error accessing camera:", err);
|
967 |
+
alert("Could not access camera. Please check permissions.");
|
968 |
+
}
|
969 |
+
},
|
970 |
+
captureImageObjdet() {
|
971 |
+
const video = this.$refs.videoObjdet;
|
972 |
+
const canvas = this.$refs.canvasObjdet;
|
973 |
canvas.width = video.videoWidth;
|
974 |
canvas.height = video.videoHeight;
|
975 |
canvas.getContext("2d").drawImage(video, 0, 0);
|
|
|
977 |
this.imageUrl = canvas.toDataURL("image/png");
|
978 |
this.clearResults();
|
979 |
},
|
980 |
+
captureImageOcr() {
|
981 |
+
const video = this.$refs.videoOcr;
|
982 |
+
const canvas = this.$refs.canvasOcr;
|
983 |
+
canvas.width = video.videoWidth;
|
984 |
+
canvas.height = video.videoHeight;
|
985 |
+
canvas.getContext("2d").drawImage(video, 0, 0);
|
986 |
|
987 |
+
this.imageUrlOcr = canvas.toDataURL("image/png");
|
988 |
+
this.clearResults();
|
989 |
+
},
|
990 |
+
stopCameraObjdet() {
|
991 |
+
const stream = this.$refs.videoObjdet.srcObject;
|
992 |
+
if (stream) {
|
993 |
+
stream.getTracks().forEach((track) => track.stop());
|
994 |
+
this.$refs.videoObjdet.srcObject = null;
|
995 |
+
this.$refs.videoObjdet.classList.add("hidden");
|
996 |
+
this.cameraActive = false;
|
997 |
+
}
|
998 |
+
},
|
999 |
+
stopCameraOcr() {
|
1000 |
+
const stream = this.$refs.videOcr.srcObject;
|
1001 |
if (stream) {
|
1002 |
stream.getTracks().forEach((track) => track.stop());
|
1003 |
+
this.$refs.videoOcr.srcObject = null;
|
1004 |
+
this.$refs.videoOcr.classList.add("hidden");
|
1005 |
this.cameraActive = false;
|
1006 |
}
|
1007 |
},
|