OpenCV实现反阈值二值化

网友投稿 596 2022-11-22

OpenCV实现反阈值二值化

OpenCV实现反阈值二值化

反阈值二值化

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

threshold(src, dst, thresh,http:// maxval, type);

参数解释

src

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

mat

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

thresh

表示阈值T。

maxval

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

type

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

其数学描述解释如下:

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

那么dst其像素描述如下:

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 ThreDofUead(new Runnable() {

@Override

public void run() {

try {

WritableImage writableImage = thresholdOfNonBinary(filePath);

Platform.runLater(new Runnable() {

@Override

publiDofUec 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();

Imgphttp://roc.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;

}

}

运行图

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:for in和for of遍历数组的索引
下一篇:Vue.js 3.0 的 Suspense组件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~