举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java手势识别 JavaFX手势事件

java手势识别 JavaFX手势事件

2023-03-22 01:20 Java教程

java手势识别 JavaFX手势事件

java手势识别

Java手势识别是一种基于计算机视觉技术的应用,它可以通过摄像头或其他图像传感器来识别人的手势。它可以用来控制计算机,操作电子设备,或者用于人机交互。

Java手势识别的原理是通过对图像中的特征进行分析,然后将其映射到一个数字表示中。例如,当你在使用手势识别时,你可能会看到一个图像中的特征如手掌、手指、手腕等。然后,这些特征将被映射到一个数字表示中,以便实现对不同手势的识别。

// Java代码实例 
public class HandGestureRecognition { 

    public static void main(String[] args) { 

        // 初始化图像传感器 
        ImageSensor imageSensor = new ImageSensor(); 

        // 读取图像数据 
        ImageData imageData = imageSensor.readImageData(); 

        // 初始化特征检测器 
        FeatureDetector featureDetector = new FeatureDetector(); 

        // 检测图像中的特征 
        List features = featureDetector.detectFeatures(imageData); 

        // 初始化手势识别引擎 
        GestureRecognitionEngine gestureRecognitionEngine = new GestureRecognitionEngine(); 

        // 识别出图像中的手势 
        List gestures = gestureRecognitionEngine.recognizeGestures(features);  

    }  
}  

JavaFX手势事件

JavaFX教程 - JavaFX手势事件


JavaFX可以处理来自触摸使能设备的触摸和手势的事件。

手势和触摸事件

支持触摸启用设备的以下事件

手势 描述
Rotate Triggered when using two-finger to rotate objects.

它触发以下事件

  • ROTATION_STARTED
  • ROTATE
  • ROTATION_FINISHED
Scroll Sliding movement.

如果鼠标滚轮用于滚动,则仅生成类型为SCROLL的事件。它触发以下事件:

  • SCROLL_STARTED
  • SCROLL
  • SCROLL_FINISHED
Swipe 在屏幕上扫描运动。
    它触发以下事件:
  • SWIPE_LEFT
  • SWIPE_RIGHT
  • SWIPE_UP
  • SWIPE_DOWN
  • Zoom 由双指缩放。它会启动以下事件:
    • ZOOM_STARTED
    • ZOOM
    • ZOOM_FINISHED
    • 手势事件示例

      import javafx.application.Application;
      import javafx.event.EventHandler;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.input.MouseEvent;
      import javafx.scene.input.RotateEvent;
      import javafx.scene.input.ScrollEvent;
      import javafx.scene.input.SwipeEvent;
      import javafx.scene.input.TouchEvent;
      import javafx.scene.input.ZoomEvent;
      import javafx.scene.shape.Rectangle;
      import javafx.stage.Stage;
      
      public class Main extends Application {
        public static void main(String[] args) {
          Application.launch(args);
        }
      
        @Override
        public void start(Stage primaryStage) {
          Group root = new Group();
          Scene scene = new Scene(root, 300, 250);
      
          Rectangle rect = new Rectangle();
          rect.setWidth(100);
          rect.setHeight(100);
          root.getChildren().add(rect);
          rect.setOnScroll(new EventHandler<ScrollEvent>() {
            @Override
            public void handle(ScrollEvent event) {
              if (!event.isInertia()) {
                rect.setTranslateX(rect.getTranslateX() + event.getDeltaX());
                rect.setTranslateY(rect.getTranslateY() + event.getDeltaY());
              }
              System.out.println("Rectangle: Scroll event" + ", inertia: "
                  + event.isInertia() + ", direct: " + event.isDirect());
              event.consume();
            }
          });
      
          rect.setOnScrollStarted(new EventHandler<ScrollEvent>() {
            @Override
            public void handle(ScrollEvent event) {
              System.out.println("Rectangle: Scroll started event");
              event.consume();
            }
          });
      
          rect.setOnScrollFinished(new EventHandler<ScrollEvent>() {
            @Override
            public void handle(ScrollEvent event) {
              System.out.println("Rectangle: Scroll finished event");
              event.consume();
            }
          });
      
          rect.setOnZoom(new EventHandler<ZoomEvent>() {
            @Override
            public void handle(ZoomEvent event) {
              rect.setScaleX(rect.getScaleX() * event.getZoomFactor());
              rect.setScaleY(rect.getScaleY() * event.getZoomFactor());
              System.out.println("Rectangle: Zoom event" + ", inertia: "
                  + event.isInertia() + ", direct: " + event.isDirect());
      
              event.consume();
            }
          });
      
          rect.setOnZoomStarted(new EventHandler<ZoomEvent>() {
            @Override
            public void handle(ZoomEvent event) {
              System.out.println("Rectangle: Zoom event started");
              event.consume();
            }
          });
      
          rect.setOnZoomFinished(new EventHandler<ZoomEvent>() {
            @Override
            public void handle(ZoomEvent event) {
              System.out.println("Rectangle: Zoom event finished");
              event.consume();
            }
          });
      
          rect.setOnRotate(new EventHandler<RotateEvent>() {
            @Override
            public void handle(RotateEvent event) {
              rect.setRotate(rect.getRotate() + event.getAngle());
              System.out.println("Rectangle: Rotate event" + ", inertia: "
                  + event.isInertia() + ", direct: " + event.isDirect());
              event.consume();
            }
          });
      
          rect.setOnRotationStarted(new EventHandler<RotateEvent>() {
            @Override
            public void handle(RotateEvent event) {
              System.out.println("Rectangle: Rotate event started");
              event.consume();
            }
          });
      
          rect.setOnRotationFinished(new EventHandler<RotateEvent>() {
            @Override
            public void handle(RotateEvent event) {
              System.out.println("Rectangle: Rotate event finished");
              event.consume();
            }
          });
      
          rect.setOnSwipeRight(new EventHandler<SwipeEvent>() {
            @Override
            public void handle(SwipeEvent event) {
              System.out.println("Rectangle: Swipe right event");
              event.consume();
            }
          });
      
          rect.setOnSwipeLeft(new EventHandler<SwipeEvent>() {
            @Override
            public void handle(SwipeEvent event) {
              System.out.println("Rectangle: Swipe left event");
              event.consume();
            }
          });
      
          rect.setOnTouchPressed(new EventHandler<TouchEvent>() {
            @Override
            public void handle(TouchEvent event) {
              System.out.println("Rectangle: Touch pressed event");
              event.consume();
            }
          });
      
          rect.setOnTouchReleased(new EventHandler<TouchEvent>() {
            @Override
            public void handle(TouchEvent event) {
              System.out.println("Rectangle: Touch released event");
              event.consume();
            }
          });
      
          rect.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
              if (event.isSynthesized()) {
                System.out.println("Ellipse: Mouse pressed event from touch"
                    + ", synthesized: " + event.isSynthesized());
              }
              event.consume();
            }
          });
      
          rect.setOnMouseReleased(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
              if (event.isSynthesized()) {
                System.out.println("Ellipse: Mouse released event from touch"
                    + ", synthesized: " + event.isSynthesized());
              }
              event.consume();
            }
          });
      
          primaryStage.setScene(scene);
          primaryStage.show();
        }
      }
      

      上面的代码生成以下结果。

      null


      阅读全文
      以上是名动网为你收集整理的java手势识别 JavaFX手势事件全部内容。
      声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
      相关文章
      © 2024 名动网 mdwl.vip 版权所有 联系我们