繁体   English   中英

JavaCV K表示运行时错误

[英]JavaCV K Means Runtime Error

我是JavaCV的初学者。 我正在尝试在图像上处理K均值。 但是,我从以下代码中获得运行时错误。 我不知道如何解决它并成功处理K Means。 谢谢你的帮助。

这是错误:

OpenCV Error: Assertion failed (labels.isContinuous() && labels.type() == CV_32S &&  
(labels.cols == 1 || labels.rows == 1) && labels.cols + labels.rows - 1 == data.rows) in 
cvKMeans2

这是我的JavaCV代码:

import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_highgui.*;
import org.bytedeco.javacv.CanvasFrame;

public class KMeansTest {
public static void runTest(){
    IplImage image = cvLoadImage("img/2014-05-18_181424.png");
    CvMat model = image.asCvMat();

    //Number of cluster
    int k=2;
    CvMat cluster = model.clone();

    cvKMeans2(model, k, cluster, cvTermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 10, 1.0));

    CanvasFrame canvas = new CanvasFrame("My Image", 1);
    canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    canvas.showImage(cluster.asIplImage());
}
}

您需要确保所有断言条件都为真。

(labels.isContinuous()&& labels.type()== CV_32S &&(labels.cols == 1 || labels.rows == 1)&& labels.cols + labels.rows-1 == data.rows)

这里的标签是指您的模型 ,因此在将其传递到cvKMeans2函数之前,需要确保正确设置了所有属性。

访问每个属性,查看哪个属性导致错误。

简单的System.out.println(“ Type:” +模型.type()); 会做。

我可以清楚地看到您的model.type()不是CV_32S,因为您是从IplImage直接以默认格式IPL_DEPTH_8U克隆它的,所以将其转换为IPL_DEPTH_32S。 同样,一一找出。

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM