欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java OpenCV开发——使用JavaCV在窗口显示图像,并监听鼠标点击事件

程序员文章站 2022-07-12 15:18:39
...

  在Eclipse下使用OpenCV开发过程中,需要在弹出窗口中显示图像,并能监听鼠标点击事件。但网上一般都是用JLabel显示图片,再添加到JFrame上;但JLabel不对输入事件作出反应,无法实现需求。
  
  为此我查遍资料,发现在JavaCV中,实现了CanvasFrame这个类,它继承了JFrame,内部是用Canvas来显示图片。而Canvas可以实现监听输入事件,所以通过CanvasFrame获取Canvas可以监听鼠标点击事件。
  
  代码实现如下(先得配置好JavaCV环境):

    public static void main(String[] args) {

        Mat mat = opencv_imgcodecs.imread("img/Lena.jpg");

        // 新建canvasFrame窗口,命名
        CanvasFrame canvasFrame = new CanvasFrame("测试点击");
        // 关闭窗口则退出程序
        canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Mat转换成能在窗口显示的格式
        ToMat converter = new OpenCVFrameConverter.ToMat();
        canvasFrame.showImage(converter.convert(mat));

        // 获取canvas
        Canvas canvas = canvasFrame.getCanvas();
        // 对canvas设置鼠标监听事件
        canvas.addMouseListener(new MouseListener() {

            @Override
            public void mouseReleased(MouseEvent e) {
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseExited(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
            }

            @Override
            public void mouseClicked(MouseEvent e) {
                // 控制台输出点击的坐标
                System.out.println("x: " + e.getX());
                System.out.println("y: " + e.getY());
            }
        });

    }

  运行结果如下:
  Java OpenCV开发——使用JavaCV在窗口显示图像,并监听鼠标点击事件
  
  鼠标点击图片后,可以看到控制台输出了点击的坐标。

相关标签: java opencv