2012-04-02 1 views
0

우선, 나는 사이트를 처음 사용하겠습니다. (그러나 나는 읽고 cacth 그 정보는 오랜 시간 이래로 아직까지 : D) 질문을 구조화하는데있어서 약간의 실수를하게되면 미안합니다 ... 그리고 가장 중요한 것은 프로그래밍에 익숙하지 않습니다 (새로운 것은 아니지만 6 개월 전에 시작되었습니다). . 내가 그것을 실행할 때, 내가 제목에 주장을 가지고 어설 션 실패 <0 <= i && i < <int> vv.size <>> 알 수없는 함수, 파일 src matrix.cpp, 줄 912

extern DWORD miothread3 (LPDWORD lpdwParam) 
{ 

Mat epsilon(dest); 
Mat finale; 
Mat *super; 
int ratio = 3; 
int lowThreshold; 
int kernel_size = 3; 
int i = 0; 
CvConvexityDefect convessione; 
vector<vector<Point> > contorni; 
vector<Vec4i> gerarchia; 
Mat hull; 

while(1) 
{ 
    Canny(epsilon, finale, lowThreshold, lowThreshold*ratio, kernel_size); 
    findContours(finale, contorni, CV_RETR_LIST, CV_CHAIN_APPROX_NONE); 
    convexHull(contorni, hull); 
} 
return 0; 
} 

는 ("어설 알 수없는 함수에 <0 <= i && i < <int>vv.size<>> 실패, 파일의 src \의 matrix.cpp, 라인 912 : 어쨌든,이 코드는 (관심있는 부분)입니다 ") 그리고 만약 내가 convexHull(contorni, hull); 라인을 주석하면 작동하지 ... lly는 문제가 무엇인지 파악할 수 없습니다. 누군가가 도울 수 있다면, 사랑 스럽습니다! :)

미리 감사드립니다.

답변

2

그 주장은 contorni 객체의 유효하지 않은 인덱스를 액세스하려고 코드 때문이다 (현재 source code)에 라인 (937)을 참조하십시오. 나는이 의심 궁극적으로 인해 아마의 convexHull() 함수에 빈을 잘못된 contorni 객체를 전달에 벡터. 일반적으로 유효하지 않은 입력을 확인하고 거부하는 기능을 기대하지만 함수에 유효한 입력이 필요한지 여부를 알기 위해 openCV에 대해 충분히 알지 못합니다 (documentation은 그 중 한 가지 또는 다른 방식을 언급하지 않습니다).

이 오류가 발생하지 않도록하려면 convexHull() 및/또는 findContours()에 대한 입력을 명시 적으로 검사하여 유효하고 중단되는지 확인하거나 그렇지 않은 경우 적절한 작업을 수행하십시오.

+2

정말 고마워, 마침내 결론에 도달 ... 사실 convexHull 함수는 입력 벡터에 걸리는 반면 findContours는 벡터 벡터를 사용하므로 문제는 "contorni"로 변환됩니다 (벡터 벡터) 벡터에 ... 누군가가 뭔가를 압니까? : D 어쨌든, 정말 고마워요! :) –

+0

나는 당신에게 유용 할지도 모르는 http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/hull/hull.html을 발견했다. – uesp

+0

uesp 감사합니다, 그것은 절대적으로 유용 할 것입니다;) –

관련 문제