Piszę projektu OpenCV używając g ++ i OpenCV 2.4.6Jak pominąć komunikat o błędzie OpenCV
Mam kod jak poniżej:
try
{
H = findHomography(obj, scene, CV_RANSAC);
}
catch (Exception &e)
{
if (showOutput)
cout<< "Error throwed when finding homography"<<endl;
errorCount++;
if (errorCount >=10)
{
errorCount = 0;
selected_temp = -99;
foundBB = false;
bb_x1 = 0;
bb_x2 = 0;
bb_y1 = 0;
bb_y2 = 0;
}
return -1;
}
Błąd zostanie wyrzucony, gdy nie udało się znaleźć findHomography rzeczy. Komunikat o błędzie zawiera:
OpenCV Error: Assertion failed (npoints >= 0 && points2.checkVector(2)
== npoints && points1.type() == points2.type()) in findHomography,
file /Users/dji-mini/Downloads/opencv- 2.4.6/modules/calib3d/src/fundam.cpp,
line 1074
OpenCV Error: Assertion failed (count >= 4) in cvFindHomography,
file /Users/dji-mini/Downloads/opencv-2.4.6/modules/calib3d/src/fundam.cpp, line 235
Ponieważ wiem, w jakich komunikat wydaje warunki, chcę tłumić te komunikaty o błędach. Ale nie wiem, jak to zrobić.
W starej wersji OpenCV wydaje się, że istnieje "cvSetErrMode", który, zgodnie z innymi artykułami, jest amortyzowany w OpenCV 2.X. Więc jakiej funkcji mogę użyć do tłumienia komunikatów o błędach OpenCV?
Dziękuję bardzo! Pracuje bardzo dobrze. Jak znalazłeś tę funkcję? – PaulYang
Musiałem trochę pogrzebać w kodzie źródłowym. – Aurelius
Funkcja jest teraz udokumentowana [tutaj] (http://opencv.jp/opencv-2.2_org/c/core_utility_and_system_functions_and_macros.html#redirecterror) i dostępna jako 'cvRedirectError'. Zobacz także powiązany kod 'error()' [here] (https://github.com/Itseez/opencv/blob/master/modules/core/src/system.cpp). Po prostu wywoła to zamiast drukować na stderr, ale nadal będzie wyrzucać wyjątek. – Albert