GVKun编程网logo

访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”

21

本篇文章给大家谈谈访问网络摄像头时出现错误“Webcam.js错误:找不到支持的网络摄像头界面”,同时本文还将给你拓展androidwebview的网络摄像头(webcam.js)显示黑屏、c–使用Q

本篇文章给大家谈谈访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”,同时本文还将给你拓展android webview 的网络摄像头 (webcam.js) 显示黑屏、c – 使用Qt显示来自OpenCV的网络摄像头流、c# – 如何显示使用Emgu捕获的网络摄像头图像?、c# – 网络摄像头 – 相机预览旋转错误的方式等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”

访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”

如何解决访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”?

更新Windows 10操作系统后,我的一个Web应用程序中出现此错误

“ Webcam.js错误:找不到支持的网络摄像头界面”

我未在服务器上使用SSL。我想访问我的网络摄像机而不安装SSL证书

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android webview 的网络摄像头 (webcam.js) 显示黑屏

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的网络摄像头流

c – 使用Qt显示来自OpenCV的网络摄像头流

所以我可以看到我的网络摄像头流与OpenCV与imshow与这个简单的代码

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();

解决方法

您必须使用QTimer创建一个继承自QMainWindow的Window.在构造函数中,将计时器连接到Window方法.您将openCV代码放入此超时方法,该方法将每X毫秒调用一次:

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捕获的网络摄像头图像?

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,但我没有让他们工作…

谢谢!

解决方法

Image Class有一个您可能正在寻找的UriSource属性

c# – 网络摄像头 – 相机预览旋转错误的方式

c# – 网络摄像头 – 相机预览旋转错误的方式

我想要您的帮助请在WebCamera问题.我使用过Nuget的图书馆WebEye.Controls. Wpf.WebCameraControl(版本1.0.0).网址是 https://www.nuget.org/packages/WebEye.Controls.Wpf.WebCameraControl/

文章和说明可在: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

如何正确旋转相机预览?你能告诉我哪里错了吗?

我附上了两张图片来说明我的问题.

解决方法

如果您不是C#的陌生人,我建议您使用EMGUCV nuget并创建自己的预览应用程序.这不是很难,你可以使用MVVM将框架绑定到您的View,使其优于使用您的控件后面的代码.

PS:这不是一个答案,但它是解决你的问题.我还没有发表评论,因为我没有50分:(

祝你今天愉快.

关于访问网络摄像头时出现错误“ Webcam.js错误:找不到支持的网络摄像头界面”的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android webview 的网络摄像头 (webcam.js) 显示黑屏、c – 使用Qt显示来自OpenCV的网络摄像头流、c# – 如何显示使用Emgu捕获的网络摄像头图像?、c# – 网络摄像头 – 相机预览旋转错误的方式的相关知识,请在本站寻找。

本文标签: