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