java 基于OpenCv图像处理_灰度加载、子矩阵、轮廓检测

java 基于OpenCv图像处理

本文依然使用javaCv封装的openCv,使用方式看第一章

2、灰度加载、子矩阵、轮廓检测

2.1、灰度加载

public static void main(String[] args) {
        Mat mat = opencv_imgcodecs.imread("D:\\leiningen\\cat.jpg",opencv_imgcodecs.IMREAD_GRAYSCALE);
        ImageViewer imageViewer = new ImageViewer(mat);
        imageViewer.imshow();
}

原图片:
在这里插入图片描述

灰度加载如下图:
在这里插入图片描述

IMREAD_REDUCED_COLOR_4和IMREAD_REDUCED_GRAYSCALE_4,一个是color一个是grayscale,一个以灰度,0或1方式加载,一个是RGB红绿蓝方式加载后面的4是缩放比例可以是2,4,8。

2.2、子矩阵

在openCv可以用submat函数获得子矩阵,javaCv中我是使用了apply。

public static void main(String[] args) {
    Mat mat = opencv_imgcodecs.imread("D:\\leiningen\\test.jpg");
    Rect rect = new Rect(740, 20, 550, 700);
    Mat apply = mat.apply(rect);  //切割
    opencv_imgcodecs.imwrite("D:\\leiningen\\test1.jpg",apply);
}

2.3、轮廓检测

在这里使用canny函数,先检测出图片中的物体轮廓,最后在高亮显示图像中的物体。

public static void main(String[] args) {
        Mat mat = opencv_imgcodecs.imread("D:\\leiningen\\cat.jpg",opencv_imgcodecs.IMREAD_REDUCED_COLOR_4);
        opencv_imgproc.cvtColor(mat,mat,opencv_imgproc.COLOR_RGB2GRAY);
        /**
         * 轮廓监测方法
         * src dist 低阈值  高阈值  光圈 3--7之间奇数,数值越大监测轮廓越多 L2梯度 设置为true
         */
        opencv_imgproc.Canny(mat,mat,180,300,3,true);	//检测
        Mat clone = mat.clone(); //克隆
        opencv_core.bitwise_not(clone,clone); //掩膜高亮
        opencv_imgcodecs.imwrite("D:\\leiningen\\cat1.jpg",clone);
}

轮廓检测后掩膜高亮如下图所示:

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值