Tôi viết một dự án sử dụng OpenCV g ++ và OpenCV 2.4.6Làm thế nào để ngăn chặn thông báo lỗi OpenCV
Tôi có một số mã như thế này:
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;
}
Lỗi sẽ được ném khi findHomography thất bại trong việc tìm nhiều thứ. Thông báo lỗi bao gồm:
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
Vì tôi biết trong điều kiện thông báo sẽ xuất hiện, tôi muốn chặn các thông báo lỗi này. Nhưng tôi không biết phải làm thế nào.
Trong phiên bản cũ của OpenCV, có vẻ như có "cvSetErrMode", theo các bài viết khác, được khấu hao trong OpenCV 2.X. Vậy tôi có thể sử dụng chức năng nào để chặn các thông báo lỗi OpenCV?
Cảm ơn bạn rất nhiều! Nó hoạt động rất tốt. Làm thế nào bạn tìm thấy chức năng này? – PaulYang
Tôi đã phải làm một số đào trong mã nguồn. – Aurelius
Hàm này được ghi lại ngay bây giờ [ở đây] (http://opencv.jp/opencv-2.2_org/c/core_utility_and_system_functions_and_macros.html#redirecterror) và có sẵn dưới dạng 'cvRedirectError'. Xem thêm mã liên quan của 'error()' [ở đây] (https://github.com/Itseez/opencv/blob/master/modules/core/src/system.cpp). Nó sẽ chỉ gọi điều này thay vì in nó để stderr, nhưng nó vẫn sẽ ném ngoại lệ. – Albert