OpenCV实现反阈值二值化


Posted in Java/Android onNovember 17, 2021

反阈值二值化

反阈值二值化与阈值二值化互为逆操作。在OpenCV中该类的实现依赖于threshold() 函数。下面是该函数的声明:

threshold(src, dst, thresh, maxval, type);

各参数解释

·src
表示此操作的源(输入图像)的Mat对象。

·mat
表示目标(输出)图像的类Mat的对象。

·thresh
表示阈值T。

·maxval
表示最大灰度值,一般为255。

·type
表示要使用的阈值类型的整数类型变量,反阈值二值化为Imgproc.THRESH_BINARY_INV。

其数学描述解释如下:

对于给定的src(x,y),若其像素值大于阈值T(thresh),则其返回0,否则为为像素最大值。

OpenCV实现反阈值二值化

那么dst其像素描述如下:

OpenCV实现反阈值二值化

Java代码(JavaFX Controller层)

public class Controller{

    @FXML private Text fxText;
    @FXML private ImageView imageView;
    @FXML private Label resultLabel;

    @FXML public void handleButtonEvent(ActionEvent actionEvent) throws IOException {

        Node source = (Node) actionEvent.getSource();
        Window theStage = source.getScene().getWindow();
        FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.png");
        fileChooser.getExtensionFilters().add(extFilter);
        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JPG Files(*.jpg)", "*.jpg"));
        File file = fileChooser.showOpenDialog(theStage);

        runInSubThread(file.getPath());

    }

    private void runInSubThread(String filePath){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    WritableImage writableImage = thresholdOfNonBinary(filePath);

                    Platform.runLater(new Runnable() {
                        @Override
                        public void run() {
                            imageView.setImage(writableImage);
                        }
                    });

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    
    private WritableImage thresholdOfNonBinary(String filePath) throws IOException {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        Mat src = Imgcodecs.imread(filePath);
        Mat dst = new Mat();

        Imgproc.threshold(src, dst, 130, 255, Imgproc.THRESH_BINARY_INV);

        MatOfByte matOfByte = new MatOfByte();
        Imgcodecs.imencode(".jpg", dst, matOfByte);

        byte[] bytes = matOfByte.toArray();
        InputStream in = new ByteArrayInputStream(bytes);
        BufferedImage bufImage = ImageIO.read(in);

        WritableImage writableImage = SwingFXUtils.toFXImage(bufImage, null);

        return writableImage;
    }

}

运行图

OpenCV实现反阈值二值化

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
springboot拦截器无法注入redisTemplate的解决方法
Jun 27 Java/Android
Java 实现限流器处理Rest接口请求详解流程
Nov 02 Java/Android
Java实现学生管理系统(IO版)
Feb 24 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 Java/Android
Android 界面一键变灰 深色主题工具类
Apr 28 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 Java/Android
Java服务调用RestTemplate与HttpClient的使用详解
Jun 21 Java/Android
SpringBoot详解执行过程
Jul 15 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 Java/Android
Java Spring读取和存储详细操作
Aug 05 Java/Android
Java实现贪吃蛇游戏的示例代码
Sep 23 Java/Android
聊聊SpringBoot自动装配的魔力
Nov 17 #Java/Android
Springboot如何同时装配两个相同类型数据库
Nov 17 #Java/Android
OpenCV实现普通阈值
聊聊Lombok中的@Builder注解使用教程
Nov 17 #Java/Android
springboot 多数据源配置不生效遇到的坑及解决
Nov 17 #Java/Android
深入解读Java三大集合之map list set的用法
详解JAVA的控制语句
Nov 11 #Java/Android
You might like
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
js表单登陆验证示例
2016/10/19 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
js实现验证码干扰(静态)
2021/02/22 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
财务经理岗位职责
2013/11/09 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
担保书怎么写
2014/04/01 职场文书
农村党员对照检查材料
2014/09/24 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
离婚协议书标准格式
2014/10/04 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
竞选稿之小学班干部
2019/10/31 职场文书