我目前正在开发一个Android应用程序。我试图转换从RBG到HSV叶的图像以产生图像,其是饱和值的空间(无色调)。接着,我试图用K-装置来产生,它应该显示蓝色作为背景和绿色为叶(前景对象)一个图像。

不过,我不知道如何使用OpenCV的K-均值功能后,显示图像。

    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均值后的图像?

最佳答案

This Java class在用于OpenCV的官方Java包装器中实现了k均值颜色聚类算法的完整功能示例。

尽管所提到的实现是在RGB颜色空间中的图像上执行的,但它是一个很好的示例,可以大致理解Java OpenCV中的k均值,您可以轻松地对其进行扩展以使其在HSV空间中工作。

10-06 10:12