Java基于opencv实现图像数字识别(三)—灰度化和二值化

本文介绍了Java基于OpenCV如何实现图像的灰度化和二值化。灰度化通过加权平均法计算像素点的灰度值,提供了两种实现方式。二值化分为固定阀值和自适应阀值方法,自适应阀值通过迭代寻找最佳分割点。文中给出了具体的代码示例,并提到OpenCV内置的二值化接口效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基于opencv实现图像数字识别(三)—灰度化和二值化

一、灰度化

灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值;因此,灰度图像每个像素点只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。一般常用的是加权平均法来求像素点的灰度值,opencv开发库所采用的一种求灰度值算法如下;
:)Gray = 0.072169 * B + 0.715160 * G + 0.212671 * R

有两种方式可以实现灰度化,如下

方式1
@Test
public void toGray() {
    // 这个必须要写,不写报java.lang.UnsatisfiedLinkError
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    File imgFile = new File("C:/Users/admin/Desktop/open/test.png");
    String dest = "C:/Users/admin/Desktop/open";

    //方式一
    Mat src = Imgcodecs.imread(imgFile.toString(), Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
    //保存灰度化的图片
    Imgcodecs.imwrite(dest + "/toGray" + imgFile.getName(), src);
}
方式2
@Test
public void toGray() {
    // 这个必须要写,不写报java.lang.UnsatisfiedLinkError
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    File imgFile = new File("C:/Users/admin/Desktop/open/test.png");
    String dest = "C:/Users/admin/Desktop/open";

    //方式二
    Mat src = Imgcodecs.imread(imgFile.toString());
    Mat gray = new Mat();
    Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
    src = gray;
    //保存灰度化的图片
    Imgcodecs.imwrite(dest + "/toGray2" + imgFile.getName(), src);
}
<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值