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基于webSocket实现扫码登录
Jun 22 Java/Android
Java中使用Filter过滤器的方法
Jun 28 Java/Android
java泛型通配符详解
Jul 25 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
关于Mybatis中SQL节点的深入解析
Mar 19 Java/Android
SpringCloud Feign请求头删除修改的操作代码
Mar 20 Java/Android
springboot+zookeeper实现分布式锁
Mar 21 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
Spring Boot接口定义和全局异常统一处理
Apr 20 Java/Android
Android中View.post和Handler.post的关系
Jun 05 Java/Android
Java使用HttpClient实现文件下载
Aug 14 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
MVC模式的PHP实现
2006/10/09 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
客户代表自我评价范例
2013/09/24 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
超市促销活动总结
2014/07/01 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
2014年副班长工作总结
2014/12/10 职场文书
导游词之清晏园
2019/11/22 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript