【问题标题】:Using K-means clustering pixel in OpenCV using Java使用 Java 在 OpenCV 中使用 K-means 聚类像素
【发布时间】:2014-04-13 06:22:48
【问题描述】:

我目前正在尝试开发一个 Android 应用程序。我试图将叶子的图像从 RBG 转换为 HSV,以生成处于饱和值空间(没有色调)的图像。接下来,我尝试使用 K-means 生成一个图像,它应该显示蓝色作为背景,绿色显示叶子(前景对象)。

但是,我不知道在OpenCV中使用K-means函数后如何显示图像。

    Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGBA2RGB,3);
    Imgproc.cvtColor(rgba, mHSV, Imgproc.COLOR_RGB2HSV,3);
    List<Mat> hsv_planes = new ArrayList<Mat>(3);
    Core.split(mHSV, hsv_planes);


    Mat channel = hsv_planes.get(2);
    channel = Mat.zeros(mHSV.rows(),mHSV.cols(),CvType.CV_8UC1);
    hsv_planes.set(2,channel);
    Core.merge(hsv_planes,mHSV);



    Mat clusteredHSV = new Mat();
    mHSV.convertTo(mHSV, CvType.CV_32FC3);
    TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER,100,0.1);
    Core.kmeans(mHSV, 2, clusteredHSV, criteria, 10, Core.KMEANS_PP_CENTERS);

使用 k-means 后如何显示图像?

【问题讨论】:

    标签: java opencv k-means


    【解决方案1】:

    This Java class 在 OpenCV 的官方 Java 包装器中实现了一个功能齐全的 k-means 颜色聚类算法示例。

    虽然上面提到的实现是在 RGB 颜色空间中的图像上执行的,但它是一个很好的例子,可以很好地理解 Java 上 OpenCV 中的 k-means,您可以轻松扩展它以使其在 HSV 空间中工作.

    【讨论】:

    猜你喜欢
    • 2015-02-15
    • 2018-01-14
    • 2016-07-28
    • 2012-03-24
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多