JavaFX读取摄像头(JavaFX嵌入Swing视频流的方法)

我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。

教程介绍、教程目录等能在README里查阅。

传送门:https://github.com/827652549/CanvasStudy

目录

 

概述

核心工具

主要过程


概述

Java嵌入带有Swing视频流的Jpanel

核心工具

webcam-capture:多平台兼容的摄像头驱动    https://github.com/sarxos/webcam-capture

SwingNode:JavaFX自带的一个class,实现JavaFX嵌入Swing

(IDE:IDEA)

主要过程

  1. 按照webcam-capture官方给的方法导入驱动包

2、不要忘记导入javafx的包

3、jdk最好选择11以下,不然要配置很多东西,推荐JDK8

4、主程序代码

package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        /*
        VideoPane摄像头视频面板
         */
        VideoPanel videoPanel = new VideoPanel();
        StackPane stackPane = new StackPane();
        stackPane.getChildren().add(videoPanel.getVideoPanel());
        primaryStage.setTitle("JavaFX嵌入通过swing调用的摄像头");
        primaryStage.setScene(new Scene(stackPane, 800, 600));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

5、我把嵌入视频的swing组件Jpanel抽出来一个JavaFX的组件VideoPanel

调用方法new VideoPanel().getVideoPanel();

ViedoPanel代码:

package sample;

import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamPanel;
import com.github.sarxos.webcam.WebcamResolution;
import javafx.embed.swing.SwingNode;

import javax.swing.*;

public class VideoPanel {


    public SwingNode getVideoPanel() {
        final SwingNode swingNode = new SwingNode();
        createSwingContent(swingNode);
        return swingNode;
    }

    private void createSwingContent(final SwingNode swingNode) {
        SwingUtilities.invokeLater(() -> {
            /*Swing中的调用摄像头方法*/
            Webcam webcam = Webcam.getDefault();
            webcam.setViewSize(WebcamResolution.VGA.getSize());
            WebcamPanel panel = new WebcamPanel(webcam);
            panel.setFPSDisplayed(true);
            panel.setDisplayDebugInfo(true);
            panel.setImageSizeDisplayed(true);
            panel.setMirrored(true);

            swingNode.setContent(panel);
        });
    }

}

6、当然要遮住我英俊潇洒的脸

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值