Spaces:
Sleeping
Sleeping
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 |
},
|