GVKun编程网logo

在Java中的Mac Os X上获取网络摄像头流(java获取摄像头视频流)

12

在本文中,您将会了解到关于在Java中的MacOsX上获取网络摄像头流的新资讯,同时我们还将为您解释java获取摄像头视频流的相关在本文中,我们将带你探索在Java中的MacOsX上获取网络摄像头流的

在本文中,您将会了解到关于在Java中的Mac Os X上获取网络摄像头流的新资讯,同时我们还将为您解释java获取摄像头视频流的相关在本文中,我们将带你探索在Java中的Mac Os X上获取网络摄像头流的奥秘,分析java获取摄像头视频流的特点,并给出一些关于.mp4或.webm中的网络摄像头录制内容无法在MacOS Safari浏览器和iOS设备上播放、c – 使用Qt显示来自OpenCV的网络摄像头流、CV2 无法读取 MacBook Pro 上的网络摄像头、html – 如何使用javascript检测实时网络摄像头中的手势?的实用技巧。

本文目录一览:

在Java中的Mac Os X上获取网络摄像头流(java获取摄像头视频流)

在Java中的Mac Os X上获取网络摄像头流(java获取摄像头视频流)

我想获取Macbook的网络摄像头流(集成的iSight网络摄像头)。

我使用Java,但对Objective-C一无所知,因此我正在寻找“全Java”解决方案。我找到了一些示例,但它们是2005年制造的,无法在我的系统上使用。

答案1

小编典典

我现在自己也遇到了同样的事情。我正在为项目使用VLCJ,它在Windows,Linux Mint,Linux Ubuntu和Mac OSX
Lion上均可完美运行。您可能已经读过,VLCJ是围绕libvlc的Java包装器,VLC播放器也使用该包装器。

问题是,当您打开VLC播放器的捕获选项时,它会在组合框中填充可用的摄像机(已连接USB)。但这只是VLC播放器自己完成的工作,它没有为此提供API。而且,如果您不通过VLCJ将某些摄像机的ID传递给它,则VLC将使用系统的默认摄像机。我使用VLCJ从USB连接的相机或台式机流式传输到文件。

我必须找到一种在系统上“扫描” USB摄像机的方法,这是特定于操作系统的。

在Windows上,我使用DirectShowJava。

在Linux上,您只需要阅读/ dev / video
*以获取可用的摄像机,并且如果您想向用户显示一些“用户友好名称”,则可以使用video4linux4java

还有3rd和您最感兴趣的那个,我还没有尝试过,但是我将尝试使用它:stack,example。

如果libvlc会给出更好的结果,那是更好的,因为我不必再使用3个API(用于3个操作系统),并且每个API都可以做VLCJ可以做的事情(仅在该平台上),而我在使用它们只是为了读取设备。

编辑
:当前的官方VLC版本是1.1.x,它在Mac上对照相机的支持有限。您只能从Mac的默认相机(iSight,内置的FaceTime)播放流媒体而没有音频。VLC1.2.0即将面世,它将具有更好的Mac支持(意识到其他连接的摄像头,桌面流和音频)。您可以在VideoLAN论坛上看到我的主题。我下载了适用于Mac的1.2.0-git版本的VLC,它看起来非常酷,并且具有真正的“
Mac感觉”。您可以从这里下载。但是请注意,这是开发版本,并且崩溃很多。

.mp4或.webm中的网络摄像头录制内容无法在MacOS Safari浏览器和iOS设备上播放

.mp4或.webm中的网络摄像头录制内容无法在MacOS Safari浏览器和iOS设备上播放

您需要将webm视频转换为mp4服务器站点,以便在Safari中播放。

在web based webcam recording上,每个浏览器都以特定的本机格式(MIME类型)保存。 Safari保存mp4 / mp3,而其他浏览器通常保存webm。 更改文件扩展名无济于事。您需要转换视频。

您可以使用服务器端ffmpeg将webm转换为mp4。

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开发更简单:考虑一下.

CV2 无法读取 MacBook Pro 上的网络摄像头

CV2 无法读取 MacBook Pro 上的网络摄像头

由于未知原因,如果您使用 pip install opencv-python 安装了 openCV,它将不适用于 macOS 的隐私政策。

您应该改用 brew 包

brew install opencv

# Brew will probably need to overwrite previous openCV installations
brew link --overwrite opencv

一旦您创建了 VideoCapture 对象,您的网络摄像头指示灯就会亮起

import cv2

cap = cv2.VideoCapture(0)
,

尝试从终端打开您的应用:python path/to/app.py 一个窗口将出现关于允许访问相机。

html – 如何使用javascript检测实时网络摄像头中的手势?

html – 如何使用javascript检测实时网络摄像头中的手势?

我将实时网络摄像机嵌入到html页面。现在我想要找到手势。如何使用JavaScript,我没有想法。我有谷歌很多,但没有得到任何好主意来完成这一点。所以任何人都知道这个?如何做到这一点

解决方法

访问网络摄像头需要HTML5 WebRTC API,它可以在Internet Explorer或iOS以外的大多数现代浏览器中使用。

手势检测可以使用Haar Cascade分类器(从OpenCV移植)与js-objectdetect或HAAR.js完成。

在JavaScript / HTML5中使用js-objectdetect的示例:打开与闭合手检测(美国手语字母表的“A”姿态)

关于在Java中的Mac Os X上获取网络摄像头流java获取摄像头视频流的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.mp4或.webm中的网络摄像头录制内容无法在MacOS Safari浏览器和iOS设备上播放、c – 使用Qt显示来自OpenCV的网络摄像头流、CV2 无法读取 MacBook Pro 上的网络摄像头、html – 如何使用javascript检测实时网络摄像头中的手势?等相关知识的信息别忘了在本站进行查找喔。

本文标签: