簡體   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