JAVA 图像处理基于OpenCv与JVM-----图像物体高亮显示(掩膜)
Posted Java璐到底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 图像处理基于OpenCv与JVM-----图像物体高亮显示(掩膜)相关的知识,希望对你有一定的参考价值。
OpenCv提供了一个非常有用的函数叫做Canny,它可以高亮显示图像中的线条。
OpenCv的canny函数可以检测灰度矩阵中的轮廓。我们需要做的只是把输入的矩阵转换成灰度图像,剩下的由Canny完成。
Canny函数包含以下参数:
源矩阵
目标矩阵
低阈值,使用150.0
高阈值,通常是低阈值的2倍或3倍
光圈,3~7之间的一个奇数,我们使用3。光圈值越大,被检测到的轮廓越多
L2梯度,暂时设置为true
Canny使用一个卷积矩阵包含一个核心像素和它的邻居像素,得到一个梯度值。如果梯度值大于高阈值,那么它就被检测为边界。如果梯度值在高阈值和低阈值之间,并且有个高阈值和它连接,那么它也会被保留。
通过Core类中的cvtColor函数,OpenCv可以很容易地改变颜色空间。
这篇文章中有关于灰度教程:JAVA 图像处理基于OpenCv与JVM-----加载保存图像
下面直接上代码:
import org.opencv.core.CvType;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import origami.Origami;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;
import org.opencv.imgcodecs.Imgcodecs;
public class HelloCv
public static void main(String[] args) throws Exception
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat tools = Imgcodecs.imread("./images/dw.jpg");
Imgproc.cvtColor(tools,tools,Imgproc.COLOR_RGB2GRAY);、、
Imgproc.Canny(tools,tools,900,1100,5,true);
Imgcodecs.imwrite("./images/dw-1.png",tools);
Mat inverTools = tools.clone();
Core.bitwise_not(inverTools, inverTools);
Imgcodecs.imwrite("./images/dw.png",inverTools);
Mat kittens = Imgcodecs.imread("./images/dw.jpg");
Imgproc.cvtColor(kittens,kittens,Imgproc.COLOR_RGB2GRAY);//转换颜色
Imgproc.Canny(kittens,kittens,900,1100,5,true);
Core.bitwise_not(kittens, kittens);//反色操作,让物体更容易辨认
//生成掩膜图片
Mat target = new Mat(kittens.height(),kittens.width(),CvType.CV_8UC3,new Scalar(0,0,255));
Mat bg = Imgcodecs.imread("./images/dw.jpg");
Imgproc.resize(bg,bg,target.size());
bg.copyTo(target,kittens);
Imgcodecs.imwrite("./images/target.png",target);
以上是关于JAVA 图像处理基于OpenCv与JVM-----图像物体高亮显示(掩膜)的主要内容,如果未能解决你的问题,请参考以下文章
JAVA 图像处理基于OpenCv与JVM-----矩阵处理图像
JAVA 图像处理基于OpenCv与JVM-----矩阵处理图像
JAVA 图像处理基于OpenCv与JVM-----矩阵处理图像