2017-06-19 7 views
0

Es kann eine grundlegende Frage sein, aber ich habe Probleme, wo ich anfangen soll.Ändern von OpenCV-Quellcode

Ich bekomme den folgenden Fehler aus dem OpenCV-Paket. Meine Frage ist: Wo ist eigentlich die Datei, die den Fehler lokalisiert und nach der möglichen Änderung, wie das Paket neu erstellt wird, um die Änderungen anzuwenden?

/build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp:323: error: (-215) 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows in function Mat 

Ich benutze Anaconda als eine Python-Distribution, aber scheint nicht den OpenCV-Quellcode dort zu finden.

+0

Sie werden nicht den Quellcode in einem vorgefertigten Binärpaket (Anaconda etc.) finden Sie Quellen aus der OpenCV Website herunterladen und baue sie selbst (einschließlich der Python-Wrapper). Was lässt Sie glauben, dass der Fehler auf der Seite des OpenCV liegt? – Headcrab

Antwort

1

Der Fehler bedeutet einfach, dass cv::Rect() Sie verwenden, um die Sub-Matrix zu erstellen, hat größere Abmessungen als Ihre ursprünglichen cv::Mat(). Oder Ihr Original cv::Mat() kann leer sein mit width, height == 0. Die Quelle kann here

Sie bestätigt werden wahrscheinlich Aufruf der cv::Mat Konstruktor als:

cv::Mat subMat = originalMat(cropRect); 

Aber prüft nicht, ob die cropRect in Grenzen der originalMat Größe ist. Um dieses Verhalten zu verhindern, dass Sie einen if Zustand platzieren können, bevor Zuschneiden der Mat wie:

originalRect = cv::Rect(0, 0, originalMat.cols, originalMat.rows); 
// Check if crop rect completely overlaps the originalMat bounds. 
if (originalRect & cropRect == cropRect) { 
    subMat = originalMat(cropRect); 
} else { 
    std::cout << originalRect << " is less than " >> cropRect << std::endl; 
}