Javascript/html — сделайте снимок с веб-камеры и обработайте его как input type=»file»
У меня есть код, который я могу загрузить, отобразить и запустить на нем распознавание лиц, например
html
<тип ввода="файл"> тело>
javascript
const imageUpload = document.getElementById('imageUpload')
Обещание.все([
faceapi.nets.faceRecognitionNet.loadFromUri('/models'),
faceapi.nets.faceLandmark68Net.loadFromUri('/models'),
faceapi.nets.ssdMobilenetv1.loadFromUri('/models')
]).затем(начало)
запуск асинхронной функции () {
константный контейнер = document.createElement('div')
container.style.position = 'относительный'
document.body.append(контейнер)
const labeledFaceDescriptors = await loadLabeledImages()
const faceMatcher = новый faceapi.FaceMatcher (помеченный как FaceDescriptors, 0.6)
пусть изображение
пусть холст
document.body.append('Загружено')
imageUpload.addEventListener('изменить', асинхронный () => {
если (изображение) image.
remove()
если (холст) canvas.remove()
изображение = ожидание faceapi.bufferToImage(imageUpload.files[0])
container.append(изображение)
холст = faceapi.createCanvasFromMedia (изображение)
container.append(холст)
const displaySize = {ширина: image.width, высота: image.height}
faceapi.matchDimensions (холст, displaySize)
константные обнаружения = ожидание faceapi.detectAllFaces(image).withFaceLandmarks().withFaceDescriptors()
const resizedDetections = faceapi.resizeResults(обнаружения, displaySize)
const results = resizedDetections.map(d => faceMatcher.findBestMatch(d.descriptor))
results.forEach((результат, я) => {
const box = resizedDetections[i].detection.box
const drawBox = new faceapi.draw.DrawBox(box, {метка: result.toString()})
drawBox.draw(холст)
})
})
}
Я хочу не выбирать изображение для загрузки, а сделать снимок с помощью веб-камеры.
Спасибо
- javascript
- html
- интерфейс
Вы можете использовать navigator. API
mediaDevices.getUserMedia
для получения доступа к камере и ImageCapture API для снятия скриншота с нее
(вы также можете использовать плюс элемент вместо ImageCapture ).
Ссылки MDN:
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
https://developer.mozilla.org/en-US/docs/Web/API/ImageCapture
Здесь у вас есть кодовая ручка, чтобы показать, как с ее помощью сделать снимок экрана: https://codepen.io/Xion14/pen/yLjyZRP
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Запрос о скрипте, который заставляет веб-камеру снимать изображение каждые x секунд
спросил
Изменено 8 лет, 6 месяцев назад
Просмотрено 3к раз
У меня есть веб-камера Trust USB.
Я нашел
стример -o 0000.jpeg -s 300x200 -j 100 -t 1 -r 10
Но он запускается только один раз и не сохраняет имя файла как нечто уникальное, поэтому при повторном запуске сценария он переопределяет предыдущие файлы с тем же именем.
Есть идеи по поводу скрипта, который может начать снимать таймлапс фотографии при запуске моей машины?
Спасибо.
- скрипты
- веб-камера
Здесь у вас есть несколько решений, возможно, лучше всего будет запустить вашу команду в одной строке следующим образом:
пока правда; сделать стример -o `date +%Y%m%d-%H%M%S`.jpg -s 300x200 -j 100 -t 1 -r 10; спать 10; сделанный
Вы можете использовать десятичные дроби в скорости. Это работает:
стример -t 99999999999999 -r 0.1 -o 00000.jpeg
Аргумент -t должен быть заполнен по какой-то причине, но вышеуказанное будет работать в течение 3 миллиардов лет (да).


remove()
если (холст) canvas.remove()
изображение = ожидание faceapi.bufferToImage(imageUpload.files[0])
container.append(изображение)
холст = faceapi.createCanvasFromMedia (изображение)
container.append(холст)
const displaySize = {ширина: image.width, высота: image.height}
faceapi.matchDimensions (холст, displaySize)
константные обнаружения = ожидание faceapi.detectAllFaces(image).withFaceLandmarks().withFaceDescriptors()
const resizedDetections = faceapi.resizeResults(обнаружения, displaySize)
const results = resizedDetections.map(d =>