本篇文章给大家谈谈访问网络摄像头时出现错误“Webcam.js错误:找不到支持的网络摄像头界面”,同时本文还将给你拓展androidwebview的网络摄像头(webcam.js)显示黑屏、c–使用Q
本篇文章给大家谈谈访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”,同时本文还将给你拓展android webview 的网络摄像头 (webcam.js) 显示黑屏、c – 使用Qt显示来自OpenCV的网络摄像头流、c# – 如何显示使用Emgu捕获的网络摄像头图像?、c# – 网络摄像头 – 相机预览旋转错误的方式等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”
- android webview 的网络摄像头 (webcam.js) 显示黑屏
- c – 使用Qt显示来自OpenCV的网络摄像头流
- c# – 如何显示使用Emgu捕获的网络摄像头图像?
- c# – 网络摄像头 – 相机预览旋转错误的方式
访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”
如何解决访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”?
更新Windows 10操作系统后,我的一个Web应用程序中出现此错误
“ Webcam.js错误:找不到支持的网络摄像头界面”
我未在服务器上使用SSL。我想访问我的网络摄像机而不安装SSL证书
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
android webview 的网络摄像头 (webcam.js) 显示黑屏
如何解决android webview 的网络摄像头 (webcam.js) 显示黑屏?
我们正在尝试使用网络摄像头 js 在我们的 android webview 应用程序中启动照片捕获过程。该代码在浏览器中完美运行,但是当我们在 android 应用程序中将页面部署为 webview 时,它在允许网络摄像头权限后只显示黑屏。
这是 MainActivity。我们正在使用的 Java / Android 清单文件和 PHP 文件
MainActivity.Java
package com.example.mbracegate;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Build;
import android.graphics.Bitmap;
import java.util.*;
import android.view.View;
import android.webkit.PermissionRequest;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.content.pm.PackageManager;
import androidx.annotation.RequiresApi;
public class MainActivity extends Activity {
private ProgressBar progressBar;
private WebView webView;
private class WebChromeClientDemo extends WebChromeClient {
private WebChromeClientDemo() {
}
public void onProgressChanged(WebView view,int progress) {
MainActivity.this.progressBar.setProgress(progress);
}
}
private class WebViewClientDemo extends WebViewClient {
private WebViewClientDemo() {
}
public boolean shouldOverrideUrlLoading(WebView view,String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view,String url) {
super.onPageFinished(view,url);
MainActivity.this.progressBar.setVisibility(8);
MainActivity.this.progressBar.setProgress(100);
}
public void onPageStarted(WebView view,String url,Bitmap favicon) {
super.onPageStarted(view,url,favicon);
MainActivity.this.progressBar.setVisibility(0);
MainActivity.this.progressBar.setProgress(0);
}
}
@SuppressLint({"SetJavaScriptEnabled"})
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.progressBar = (ProgressBar) findViewById(R.id.progressBar);
this.progressBar.setMax(100);
this.webView = (WebView) findViewById(R.id.simpleWebView);
this.webView.setWebViewClient(new WebViewClientDemo());
this.webView.getSettings().setmediaplaybackRequiresUserGesture(false);
this.webView.setWebChromeClient(new WebChromeClient() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
});
WebSettings settings = this.webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasCameraPermission = checkSelfPermission(Manifest.permission.CAMERA);
List<String> permissions = new ArrayList<String>();
if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.CAMERA);
}
if (!permissions.isEmpty()) {
requestPermissions(permissions.toArray(new String[permissions.size()]),111);
}
}
CookieManager.getInstance();
this.webView.loadUrl("https://mbracecloud.com/index_camera.PHP");
}
public boolean onKeyDown(int keyCode,KeyEvent event) {
if (keyCode == 4 && this.webView.canGoBack()) {
this.webView.goBack();
return true;
}
finish();
return super.onKeyDown(keyCode,event);
}
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
}
Android 清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mbracegate" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.level.full" android:required="true" />
<uses-feature android:name="android.hardware.camera.capability.raw" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUdio" />
<uses-permission android:name="android.permission.MODIFY_AUdio_SETTINGS" />
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
<uses-permission android:name="android.permission.AUdio_CAPTURE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUdio_SETTINGS" />
<application
android:hardwareAccelerated="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
android:name="com.example.mbracegate.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
PHP 文件
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,initial-scale=1">
<link href="css/style.css" rel="stylesheet">
<script type="text/javascript" src="https://mbracecloud.com/appln_enterprise/es/webcamjs/webcam.min.js"></script>
<!-- Code to handle taking the snapshot and displaying it locally -->
<script language="JavaScript">
// Configure a few settings and attach camera
function configure(){
Webcam.set({
width: 900,height:650,image_format: ''jpeg'',jpeg_quality: 100
});
Webcam.attach(''#my_camera'');
}
</script>
</head>
<body >
<div id="my_camera">></div>
<input type="button" onClick="configure ();">
</body>
</html>
注意:我们正在使用 appetize.io 来测试我们的应用程序。我的安卓模拟器坏了,几天前我的智能手机有点停止安装应用程序。所以除了在 appetize.io 中测试之外别无他法。这是该测试的网址:https://appetize.io/app/wz565bcb9ywcq6cwdmkd53x1uw?device=nexus5&scale=75&orientation=portrait&osVersion=8.1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
c – 使用Qt显示来自OpenCV的网络摄像头流
int main(int,char**) { VideoCapture cap(0); Mat edges; namedWindow("webcam",1); while (true) { Mat frame; cap >> frame; imshow("webcam",frame); if (waitKey(30) >= 0) break; } return 0; }
现在我想要的是在QT的Widget中显示来自OpenCV的QImage中的图像
这是从cv :: Mat到QImage的转换
QImage Mat2QImage(cv::Mat const& src) { cv::Mat temp; cvtColor(src,temp,CV_BGR2RGB); QImage dest((const uchar *)temp.data,temp.cols,temp.rows,temp.step,QImage::Format_RGB888); dest.bits(); // of QImage::QImage ( const uchar * data,int width,int height,Format format ) return dest; }
以及在QT中用QImage显示图像的小代码
int main(int argc,char *argv[]) { QApplication a(argc,argv); QImage myImage; myImage.load("a.png"); QLabel myLabel; myLabel.setpixmap(Qpixmap::fromImage(myImage)); myLabel.show(); return a.exec(); }
我试图以这种方式组合它们,但没有运气
int main(int argc,argv); VideoCapture cap(0); QImage myImage; QLabel myLabel; while (true) { Mat frame; cap >> frame; // get a new frame from camera myImage = Mat2QImage(frame); myLabel.setpixmap(Qpixmap::fromImage(myImage)); } myLabel.show(); return a.exec();
解决方法
class Window : public QMainWindow { Q_OBJECT QTimer _timer; private slots: void on_timeout() { // put your opencv code in it } public: Window() : QMainWindow(),_timer(this) { connect(&_timer,SIGNAL(timeout()),this,SLOT(on_timeout())); // populate your window with images,labels,etc. here _timer.start(10 /*call the timer every 10 ms*/); } };
然后在主要显示你的窗口:
int main(int argc,argv); Window win; win.show(); return a.exec(); }
如果您使用Qt创建者,使用Qt开发更简单:考虑一下.
c# – 如何显示使用Emgu捕获的网络摄像头图像?
因此,我需要一种方式来向用户显示网络摄像头图像,以便他可以调整自己的脸部.
我一直在尝试使用尽可能少的cpu从网络摄像头获取图像的很多东西:
> VideoRendererElement
> WPFMediaKit
> DirectShow-Lib
但没有一个是好的…任何一种方式太慢或太cpu资源消耗.
然后我尝试了Emgu library,我感觉很好.
起初,我在一个Windows窗体项目中尝试过,并在图片框中更新图像.
但是,当我尝试将其整合到我的WPF项目中时,我陷入了如何将我的图像传递给我的图像控件.
现在我有以下源代码:
<Window x:xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Width="800" Height="600" Loaded="Window_Loaded" Closing="Window_Closing"> <Grid> <Image x:Name="webcam" Width="640" Height="480" > <Image.Clip> <EllipseGeometry RadiusX="240" RadiusY="240"> <EllipseGeometry.Center> <Point X="320" Y="240" /> </EllipseGeometry.Center> </EllipseGeometry> </Image.Clip> </Image> </Grid> </Window>
和代码背后:
private Capture capture; private System.Timers.Timer timer; public Window1() { InitializeComponent(); } private void Window_Loaded(object sender,RoutedEventArgs e) { capture = new Capture(); capture.FlipHorizontal = true; timer = new System.Timers.Timer(); timer.Interval = 15; timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.Start(); } void timer_Elapsed(object sender,ElapsedEventArgs e) { using (Image<Bgr,byte> frame = capture.QueryFrame()) { if (frame != null) { var bmp = frame.Bitmap; // How do I pass this bitmap to my Image control called "webcam"? } } } private void Window_Closing(object sender,CancelEventArgs e) { if (capture != null) { capture.dispose(); } }
我的猜测是使用BitmapSource / WriteableBitmap,但我没有让他们工作…
谢谢!
解决方法
c# – 网络摄像头 – 相机预览旋转错误的方式
文章和说明可在:http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control
由于项目限制,我为Linx平板电脑(Windows 10)开发了WPF应用程序,而不是通用Windows应用程序.我使用WebEye库连接到平板电脑上的网络摄像头并用它拍照.当我将平板电脑保持在横向,但是当我将平板电脑保持在纵向模式时,它的工作正常.在纵向模式下,CameraPreview / VideoWindow自动旋转-90度.
我尝试解决问题没有效果.
>通过Webcamera RenderTransform或LayoutTransform属性旋转视频窗口周围的控件 – 控件旋转,但视频图像不能正确旋转.
>试图旋转WebCamera Content属性中的VideoWindow – 我从GitHub获取了源代码,并设置了可用于访问的VideoWindow.重新构建库并使用它通过其RenderTransform属性来旋转VideoWindow. https://github.com/jacobbo/WebEye/tree/master/WebCameraControl
无论我做什么,相机预览始终是-90度.
该库很简单,它没有很多属性来操纵视频窗口.
web控件在XAML中.
<wpf:WebCameraControl x:Name="webCameraControl" MouseDoubleClick="webCameraControl_MouseDoubleClick" StylusButtonUp="webCameraControl_StylusButtonUp" MouseUp="webCameraControl_MouseUp" TouchUp="webCameraControl_TouchUp" GotMouseCapture="webCameraControl_GotMouseCapture" />
这是我如何初始化WebCamera.当UserControl加载时,它将自动连接到平板电脑上的网络摄像头.请参阅startViewing()函数.
private WebCameraId _cameraID = null; private void UserControl_Loaded(object sender,RoutedEventArgs e) { startViewing(); } private void startViewing() { List<WebCameraId> cams = (List<WebCameraId>)webCameraControl.GetVideoCaptureDevices(); if (cams.Count > 0) { _cameraID = (WebCameraId)cams[0]; webCameraControl.StartCapture(_cameraID); } }
当应用程序在显示屏幕上检测到更改时,我试图强制控件正确旋转.请参阅displaySettingsChanged事件.
public ucWebCam() { InitializeComponent(); Microsoft.Win32.SystemEvents.displaySettingsChanged += SystemEvents_displaySettingsChanged; } private void SystemEvents_displaySettingsChanged(object sender,EventArgs e) { try { double angle = 0; if (SystemParameters.PrimaryScreenWidth > SystemParameters.PrimaryScreenHeight) { angle = 0; } else { angle = -90; } webCameraControl.StopCapture(); adjustWebcamAngle(angle); webCameraControl.StartCapture(_cameraID); } catch (Exception ex) { } } private void adjustWebcamAngle(double angle) { try { // IGnorE portrait boolean flag bool portrait = false; if (angle == 90 || angle == 180) { portrait = true; } // TRIED TO SET THE ANGLE OF THE CONTROL TO NO AVAIL RotateTransform rottransform = new RotateTransform(angle); //rottransform.Angle = angle; ScaleTransform scaleTransform = new ScaleTransform(); //scaleTransform.ScaleX = (portrait) ? 0 : 1; //scaleTransform.ScaleY = (portrait) ? 0 : 1; TransformGroup tGroup = new TransformGroup(); //tGroup.Children.Add(scaleTransform); tGroup.Children.Add(rottransform); // ROTATE CAMERA! webCameraControl.RenderTransform = tGroup; } catch (Exception ex) { } }
到目前为止,我只是旋转了WebCam控件,而不是视频图像.
我在亚历山大的文章中看到了没有喜悦的评论:http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control
如何正确旋转相机预览?你能告诉我哪里错了吗?
我附上了两张图片来说明我的问题.
解决方法
PS:这不是一个答案,但它是解决你的问题.我还没有发表评论,因为我没有50分:(
祝你今天愉快.
关于访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android webview 的网络摄像头 (webcam.js) 显示黑屏、c – 使用Qt显示来自OpenCV的网络摄像头流、c# – 如何显示使用Emgu捕获的网络摄像头图像?、c# – 网络摄像头 – 相机预览旋转错误的方式的相关知识,请在本站寻找。
本文标签: