camera 相关问题

在现实世界中,相机是一种拍摄物理或数码照片的设备。在虚拟世界中,它用于瞄准虚拟对象和/或穿过虚拟场景。


可以制作一个Android应用程序,以记录音频在使用Fotos时?

有人可以说更多吗? Android是否有可能在应用程序中存档?

回答 1 投票 0



HTML输入捕获=“相机”不起作用,它在Phonegap应用程序(Android)

我是使用PhoneGap创建应用程序,HTML/CSS/JS由我们自己的(PHP)框架自动生成。 我们这样做是因为我们希望将网站代码与应用程序代码相同。 (更少的编程时间,成本更低)

回答 1 投票 0

camera扫描QR flutter Windowswebview

由于Camera_windows没有提供流映像,因此我切换到另一个解决方案是使用WebView,但我不知道从哪里开始,有人以前这样做了,如果是这样,请给我一些提示。预先感谢!

回答 1 投票 0

ZXINGQR代码扫描仪将根据目标距离自动选择相机

Html: <zxing-scanner [device]="selectedDevice" (scanSuccess)="onQrCodeScanComplete($event)" style="width: 100%; max-height: 50vh;"> </zxing-scanner> 我的组件中有一个Zxing扫描仪的角度项目。我需要它根据您离目标的距离自动选择适当的相机。这是因为有些拥有iPhone 15 Pro的人与扫描仪没有选择相机的距离有问题。有没有一种方法可以不断自动选择正确的相机(不仅在开始时,就像默认的相机应用程序一样,因此在摄像机打开时将其调整)并将其存储在selectedDevice变量中? 您可以使用ZXing提供的内置事件来管理相机选择。 事件发出了一系列MediaDeviceInfo对象,这些对象代表可用的摄像机。您可以根据首选标签或MediaDeviceInfo对象的其他属性过滤摄像机过滤,也可以创建下拉模式以允许用户自己选择设备。然后,将其绑定到Zxing组件的(camerasFound)输入,该输入会触发OnChange。 ,您也可以使用(camerasFound)属性来防止ZXing扫描仪初始化默认摄像头,直到选择特定的设备为止。 我还建议设置[device]属性。启用自动对焦可显着提高扫描质量。 术语,您可以直接禁用Zxing AutoStart并直接从浏览器API管理设备 - 请参阅MediaDevices:getusermedia()[enable] [autofocusEnabled]="true"

回答 1 投票 0


Gl_lines在Android上使用OpenGL ES2.0

在我的Android应用程序中,我使用的是OpenGL ES 2.0,我需要在场景的中心显示网格。我还有可以在场景中心旋转的相机。 我正在使用

回答 0 投票 0

ESP32-CAM摄像机流媒体和Websocket同时 我正在尝试在我的本地WiFi(由PC托管)中控制一个由Web服务器控制的迷你储罐。我正在解决一个主要问题 - 当相机流处于活动状态时,请停止回答和AF ...

#include <WiFi.h> #include <WebServer.h> #include <WebSocketsClient.h> #include "esp_camera.h" #define PWDN_GPIO_NUM 32 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 0 #define SIOD_GPIO_NUM 26 #define SIOC_GPIO_NUM 27 #define Y9_GPIO_NUM 35 #define Y8_GPIO_NUM 34 #define Y7_GPIO_NUM 39 #define Y6_GPIO_NUM 36 #define Y5_GPIO_NUM 21 #define Y4_GPIO_NUM 19 #define Y3_GPIO_NUM 18 #define Y2_GPIO_NUM 5 #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22 const char* ssid = "****************"; const char* password = "****************"; WebServer server(80); WebSocketsClient webSocket; const char* tankID = "1"; const char* websocketServer = "**********"; // Zmień na adres IP serwera const int websocketPort = 8080; void startCamera() { camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sccb_sda = SIOD_GPIO_NUM; config.pin_sccb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; if (psramFound()) { config.frame_size = FRAMESIZE_VGA; config.jpeg_quality = 12; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_QVGA; config.jpeg_quality = 12; config.fb_count = 2; } esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Błąd inicjalizacji kamery: 0x%x", err); while (true); } } void handleStream() { server.sendContent("HTTP/1.1 200 OK\r\n" "Content-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n"); while (true) { camera_fb_t *fb = esp_camera_fb_get(); if (!fb) { Serial.println("Błąd pobierania obrazu"); break; } server.sendContent("--frame\r\n"); server.sendContent("Content-Type: image/jpeg\r\n\r\n"); server.sendContent((const char*)fb->buf, fb->len); server.sendContent("\r\n"); esp_camera_fb_return(fb); delay(20); if (!server.client().connected()) break; } } void webSocketEvent(WStype_t type, uint8_t *payload, size_t length) { switch (type) { case WStype_CONNECTED: Serial.println("Połączono z WebSocketem!"); webSocket.sendTXT("{\"type\":\"register\", \"tank\":\"" + String(tankID) + "\"}"); break; case WStype_DISCONNECTED: Serial.println("Rozłączono z WebSocketem!"); break; case WStype_ERROR: Serial.println("Błąd WebSocket!"); break; case WStype_TEXT: Serial.print("Otrzymano: "); Serial.println((char*)payload); if (strcmp((char*)payload, "{\"command\":\"forward\"}") == 0) { Serial.println("Jedź do przodu!"); } else if (strcmp((char*)payload, "{\"command\":\"backward\"}") == 0) { Serial.println("Jedź do tyłu!"); } else if (strcmp((char*)payload, "{\"command\":\"left\"}") == 0) { Serial.println("Skręt w lewo!"); } else if (strcmp((char*)payload, "{\"command\":\"right\"}") == 0) { Serial.println("Skręt w prawo!"); } break; } } void setup() { Serial.begin(115200); WiFi.begin(ssid, password); Serial.print("Łączenie z Wi-Fi..."); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nPołączono!"); Serial.print("Adres IP: "); Serial.println(WiFi.localIP()); startCamera(); webSocket.begin(websocketServer, websocketPort, "/"); webSocket.onEvent(webSocketEvent); webSocket.setReconnectInterval(5000); server.on("/stream", handleStream); server.begin(); Serial.println("Serwer HTTP uruchomiony!"); } void loop() { server.handleClient(); webSocket.loop(); }

回答 1 投票 0

运行ESP32-CAM视频记录代码

i我想将代码上传到我的ESP32-CAM中,以便我可以将相机记录的视频保存到SDCARD。但是我在上传时遇到了以下错误:

回答 1 投票 0


CapturePhotoOutput-可能无法重复使用设置

我已经实现了基本的摄像头捕获会话,并从中单击了图像。一切都很好,直到我在自动/开/关模式之间切换闪光灯。我单击第一张照片然后更改闪存模式后,应用程序崩溃了错误:

回答 2 投票 0


Three.js:更改向上轴的方法?

我看到Colladaloader有一种方法可以将Upaxis设置为“ Z” ...是否有办法在三分js中进行此操作,以便相机的向上轴为z? 谢谢!

回答 2 投票 0

金属着色器在 iOS Swift 中应用灰度滤镜时垂直拉伸相机预览

我正在构建一个 iOS 应用程序,在其中使用 Metal 着色器将灰度滤镜应用于实时摄像机源。灰度效果效果很好,但是当我应用它时,相机预览会垂直拉伸......

回答 1 投票 0

Three.js - 检查物体是否仍在相机视野中

使用 2D 画布时,如果您想检查某些内容是否不再“在屏幕上”,您只需执行以下操作: if( pos.x > window.innerWidth || pos.x < 0 || pos.y > 窗口。

回答 2 投票 0

Flutter 中的变焦相机

我正在使用这个库来显示相机(https://pub.dev/packages/camera),但是,我想在相机启动之前为相机设置一个预定义的缩放值,但我无法识别我在哪里...

回答 4 投票 0

Flutter 使用相机包进行双摄像头视频录制

我目前正在开发一个 Flutter 应用程序,我正在使用相机包来处理相机功能。我的要求是同时从前置和后置摄像头录制视频。我需要...

回答 1 投票 0

将 MediaDevices.enumerateDevices() 的值分配给 JavaScript 中的全局变量

我有一个关于JavaScript顺序的问题。让我先向您展示我的代码: 这是我的 HTML: 我有一个关于 JavaScript 顺序的问题。让我先向您展示我的代码: 这是我的 HTML: <video id="video" width="320" height="320" autoplay></video><br> <button id="snap">Snap Photo</button><br> <canvas id="canvas" width="320" height="320"></canvas> <p id="pngHolder"></p> 这是我的 JavaScript: <script> var Id; //List cameras and microphones. if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { console.log("enumerateDevices() not supported."); } navigator.mediaDevices.enumerateDevices() .then(function (devices) { devices.forEach(function (device) { if (device.kind == "videoinput" && device.label.indexOf('back') >= 0) { Id = device.deviceId; alert("ID 1 : " + Id); } }); }) .catch(function (err) { console.log(err.name + ": " + err.message); }); // Put event listeners into place window.addEventListener("DOMContentLoaded", function () { // Grab elements, create settings, etc. alert("ID 2 : "+ Id); var canvas = document.getElementById("canvas"), videoObj = { video: { optional: [{ deviceId: Id }] } }, context = canvas.getContext("2d"), video = document.getElementById("video"), errBack = function (error) { console.log("Video capture error: ", error.code); }; // Trigger photo take document.getElementById("snap").addEventListener("click", function () { context.drawImage(video, 0, 0, 640, 480); // Get the image var image = convertCanvasToImage(canvas); // Actions document.getElementById("pngHolder").appendChild(image); // Converts canvas to an image function convertCanvasToImage(canvas) { var image = new Image(); image.src = canvas.toDataURL("image/png"); return image; } }); //alert("ID 2 : " + Id); // Put video listeners into place if (navigator.getUserMedia) { // Standard navigator.getUserMedia(videoObj, function (stream) { video.src = stream; video.play(); }, errBack); } else if (navigator.webkitGetUserMedia) { // WebKit-prefixed navigator.webkitGetUserMedia(videoObj, function (stream) { video.src = window.webkitURL.createObjectURL(stream); video.play(); }, errBack); } else if (navigator.mozGetUserMedia) { // Firefox-prefixed navigator.mozGetUserMedia(videoObj, function (stream) { video.src = window.URL.createObjectURL(stream); video.play(); }, errBack); } }, false); 我想将 device.deviceId 的值插入到我在 JavaScript 行第一行定义的变量 Id 中。它仍然是成功的(由 alert("ID 1 : " + Id); 表示)。但是当我尝试将其放入 optional: [{ deviceId: Id }] 时,Id 没有任何值。 而且,当我尝试使用浏览器运行它时,我发现首先显示的是 alert("ID 2 : " + Id); 而不是 alert("ID 1 : " + Id);。其实我已经把alert("ID 1 : " + Id);放在第一位了。我认为这就是变量仍然为空的原因。 我的问题是如何将 device.deviceId 值插入到 optional: [{ deviceId: Id }] ? navigator.mediaDevices.enumerateDevices 和 DOMContentLoaded 正在比赛,后者获胜,因此您在设置之前使用 Id。 要解决此问题,请使用临时 haveId 承诺: var haveId = navigator.mediaDevices.enumerateDevices() .then(devices => devices.find(d => d.kind == "videoinput" && d.label.indexOf("back") >= 0)); // Put event listeners into place window.addEventListener("DOMContentLoaded", function () { haveId.then(id => { // Grab elements, create settings, etc. alert("ID 2 : "+ id); var canvas = document.getElementById("canvas"), videoObj = { video: { deviceId: id } }, // <-- adapter.js constraints Promise 链创建依赖关系,这样,在这两件事都发生之前,getUserMedia代码不会继续执行。 第二个问题是你混合了新的和过时的 Chrome 特定约束。要么使用 adapter.js 直到 Chrome 赶上,或者在紧要关头,使用仅限 Chrome 的 sourceId(但这在任何其他浏览器中都不起作用)。 navigator.mediaDevices.enumerateDevices() 是异步的。它返回一个承诺(想想回调,但更奇特)。 您应该从那里触发对 getUserMedia 的调用,或者等待 DOMContentLoaded 和 enumerateDevices,然后执行 getUserMedia。 我没有任何答案 我的开发者帐户无法连接我所有的电子邮件,即使是在 Google 之外发送的电子邮件 我的手机 我的电视 我的电脑 我妈妈的手机 她的 Wi-Fi 我丈夫的手机 他妻子的一切都已连接我没有,我对此一无所知,我对手机或电脑一无所知,我没有授权,没有告诉任何人他们可以这样做,有人知道发生了什么事吗???

回答 3 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.