[英]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.