Java|Java OpenCV-4.0.0 图像处理23 图像轮廓


Java OpenCV-4.0.0 图像处理23 图像轮廓

Java OpenCV-4.0.0 图像轮廓
输入图像转为灰度图像cvtColor
使用Canny进行边缘提取,得到二值图像
使用findContours寻找轮廓
使用drawContours绘制轮廓

package com.xu.image; import java.util.ArrayList; import java.util.List; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfPoint; import org.opencv.core.Scalar; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; /** * * @Title: Image.java * @Description: OpenCV-4.0.0 测试文件 * @Package com.xu.test * @author: xuhyacinth * @date: 2019年12月10日20:17:11 * @version: V-1.0.0 * @Copyright: 2019 xuhyacinth * */ public class Image { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); } public static void main(String[] args) { contour(); } /** * OpenCV-4.0.0轮廓发现 * * @return: void * @date: 2019年12月10日20:17:11 */ public static void contour() { //1 获取原图 Mat src = https://www.it610.com/article/Imgcodecs.imread("C:\\Users\\xuhya\\Pictures\\qq.jpg"); //2 图片灰度化 Mat gary = new Mat(); Imgproc.cvtColor(src, gary, Imgproc.COLOR_RGB2GRAY); //3 图像边缘处理 Mat edges = new Mat(); Imgproc.Canny(gary, edges, 200, 500, 3, false); //4 发现轮廓 List list = new ArrayList(); Mat hierarchy = new Mat(); Imgproc.findContours(edges, list, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE); //5 绘制轮廓 for (int i = 0, len = list.size(); i < len; i++) { Imgproc.drawContours(src, list, i, new Scalar(0, 255, 0), 1, Imgproc.LINE_AA); } HighGui.imshow("111", src); HighGui.waitKey(0); }}

【Java|Java OpenCV-4.0.0 图像处理23 图像轮廓】Java|Java OpenCV-4.0.0 图像处理23 图像轮廓
文章图片

    推荐阅读