网站开发常用数据库,江苏大才建设集团网站,点墨网站,做数模必逛的网站专栏简介 #x1f492;个人主页 #x1f4f0;专栏目录 点击上方查看更多内容 #x1f4d6;心灵鸡汤#x1f4d6;我们唯一拥有的就是今天#xff0c;唯一能把握的也是今天建议把本文当作笔记来看#xff0c;据说专栏目录里面有相应视频#x1f92b; #x1f9ed;文… 专栏简介 个人主页 专栏目录 点击上方查看更多内容 心灵鸡汤我们唯一拥有的就是今天唯一能把握的也是今天建议把本文当作笔记来看据说专栏目录里面有相应视频 文章导航 ⬆️ 11.Imgcodecs之图像读写 ⬇️ 13.待更新 窗口操作之HighGui 一、方法介绍1.imshow2.waitKey3.moveWindow4.resizeWindow5.窗口销毁1.destroyAllWindows()2.destroyWindow(java.lang.String winname) 6.createJFrame7.toBufferedImage(Mat m) 二、Jfram示例1.通过按钮指定格式读取图像2.通过滑动块调节图像亮度 openCV提供了一个HighGui类它可以用来将图像显示在窗口中。 一、方法介绍 仅对全参方法进行说明
1.imshow
在指定的一个窗口中显示一张图片 imshow(java.lang.String winname, Mat img) 参数 winname 一个String类型表示窗口的名称。如果窗口不存在将会创建一个新的窗口img 一个Mat对象表示要显示的图像 这个方法通常与HighGui.waitKey(int delay) 方法一起使用后者用于等待用户按键或指定的延迟时间以便用户有足够的时间查看图像。
2.waitKey
1.等待一个键盘事件 waitKey(int delay) 参数 delay这个参数指定等待键盘事件的时间单位为毫秒。如果 delay 为正数函数会等待指定的时间如果这段时间内有键盘事件发生它会立即返回并给出键盘事件的ASCII码。如果在这段时间内没有键盘事件发生函数返回值为 -1。如果 delay 为0函数会无限期地等待键盘事件
3.moveWindow
1.移动窗口 moveWindow(java.lang.String winname, int x, int y) 参数 winname指定窗口的名称x窗口新的x轴位置坐标y窗口新的y轴位置坐标 窗口的新位置是相对于屏幕左上角的
4.resizeWindow
1.调整显示窗口的大小 resizeWindow(java.lang.String winname, int width, int height) 参数 winname指定窗口的名称width 窗口新的宽度height 窗口新的高度
5.窗口销毁
1.destroyAllWindows() 销毁全部窗口
2.destroyWindow(java.lang.String winname) 销毁指定的窗口
6.createJFrame 创建一个JFrame窗口用于显示图像。(示例见下文) createJFrame(java.lang.String title, int flag) 参数 titleJFrame窗口的标题flag 指定窗口的属性。在java openCV中对相关的属性进行了简化仅有两个类型 WINDOW_AUTOSIZE:根据内容自动调整窗口大小(窗口大小不可拖动) WINDOW_NORMAL:可托送窗口大小
7.toBufferedImage(Mat m) 将OpenCV的Mat对象转换为Java AWT的Image对象
二、Jfram示例 代码基于目前已知的函数进行实现所以代码并不合理 了解即可!!!
1.通过按钮指定格式读取图像 public static void main(String[] args) {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//读取图片Mat imread Imgcodecs.imread(123.png);//窗口JFrame frame HighGui.createJFrame(imread, HighGui.WINDOW_AUTOSIZE);// 创建按钮JButton b1 new JButton(Gray);JButton b2 new JButton(REDUCED_COLOR_2);JPanel panel new JPanel();panel.add(b1);panel.add(b2);frame.add(panel, BorderLayout.NORTH);// 转换Mat到BufferedImageImage bufferedImage HighGui.toBufferedImage(imread);final ImageIcon[] imageIcon {new ImageIcon(bufferedImage)};// 创建JLabel来显示图像JLabel jLabel new JLabel(imageIcon[0]);frame.add(jLabel, BorderLayout.CENTER);b1.addMouseListener(new MouseAdapter() {Overridepublic void mouseClicked(MouseEvent e) {super.mouseClicked(e);Mat imread Imgcodecs.imread(123.png,Imgcodecs.IMREAD_GRAYSCALE);Image image HighGui.toBufferedImage(imread);imageIcon[0] new ImageIcon(image);jLabel.setIcon(imageIcon[0]);//重绘frame.repaint();}});b2.addMouseListener(new MouseAdapter() {Overridepublic void mouseClicked(MouseEvent e) {super.mouseClicked(e);Mat imread Imgcodecs.imread(123.png,Imgcodecs.IMREAD_REDUCED_COLOR_2);Image image HighGui.toBufferedImage(imread);imageIcon[0] new ImageIcon(image);jLabel.setIcon(imageIcon[0]);frame.repaint();}});//frame.pack();frame.setVisible(true);}
效果
2.通过滑动块调节图像亮度 public static void main(String[] args) {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//读取图片Mat imread Imgcodecs.imread(123.png);//窗口JFrame frame HighGui.createJFrame(imread, HighGui.WINDOW_AUTOSIZE);// 创建滑块JSlider slider new JSlider(0,10,1);slider.setMajorTickSpacing(10);slider.setMinorTickSpacing(1);slider.setPaintTicks(true);slider.setPaintLabels(true);frame.add(slider,BorderLayout.NORTH);// 转换Mat到BufferedImageImage bufferedImage HighGui.toBufferedImage(imread);final ImageIcon[] imageIcon {new ImageIcon(bufferedImage)};// 创建JLabel来显示图像JLabel jLabel new JLabel(imageIcon[0]);frame.add(jLabel, BorderLayout.CENTER);slider.addChangeListener(new ChangeListener() {Overridepublic void stateChanged(ChangeEvent e) {JSlider source (JSlider) e.getSource();int value source.getValue();Mat dst new Mat();imread.convertTo(dst,imread.type(),value);Image image HighGui.toBufferedImage(dst);imageIcon[0] new ImageIcon(image);jLabel.setIcon(imageIcon[0]);frame.repaint();}});//frame.pack();frame.setVisible(true);}结果