2016-08-05 11 views
1

Ich versuche, die cv :: Distance() Funktion zu verwenden, aber die folgende Fehlermeldung zur Laufzeit erhalten:OpenCV 2.4 Nicht unterstütztes Format für Distance

OpenCV Error: Unsupported format or combination of formats (source image must be 8uC1 and the distance map must be 32fC1 (or 8uC1 in case of simple L1 distance transform)) in cvDistTransform,

Allerdings scheint es, dass meine Eingangsmatte in der Tat CV_8U ist (sein Typ = 16, Tiefe = 0, Kanäle = 3). Meine Ausgabematte ist als CV_32FC1 deklariert. Fehlerhafter Code:

 //...Apply laplacian 
    //Convert to CV_8U 
    cv::convertScaleAbs(image_laplacian, image_laplacian); 

    //Distance transform 
    cv::Mat edge_distance(image_laplacian.rows, image_laplacian.cols, CV_32FC1); 
    cv::distanceTransform(image_laplacian, edge_distance, CV_DIST_L2, 5); 

Danke für die Hilfe!

Antwort

1

Wenn jemand neugierig ist. Stellen Sie sicher, dass Ihr Bild einkanalig ist. Ich ging davon aus, dass CV_8U für Graustufenbilder in CV_8UC1 umgewandelt werden konnte, aber das ist nicht der Fall

Sie können cv::cvtColor(src, src, CV_BGR2GRAY); verwenden, um die Anzahl der Kanäle zu reduzieren.

Verwandte Themen