2011-07-06 2 views
1

OpenCV (v1.1,2.0,2.2)에서 cvFindExtrinsicCameraParams2() 메소드를 사용할 때 오류가 발생합니다. iPhone3GS에서 작동하지만 iPhone4에서 테스트하면 넘어집니다. 오류 :iPhone4에서 cvFindExtrinsicCameraParams2() 오류가 발생했습니다.

"해방 된 개체에 대한 잘못된 체크섬 - 객체는 아마도 해방 후 수정 된"

내가 문제를 해결하지만, 도입 복식에 반대 cvMat 유형의 훨씬 수레로 변환 결국 결과가 너무 많아서 이상한 결과가 나옵니다.

iPhone4의 스택 제한이 두 배가됩니까?

어쨌든 - 누군가가이 문제를 해결했는지 궁금합니다. (또한 - 최적화 된 버전을 알고 계신 분 누구입니까?)

답변

1

왜 당신은 오류가 있었는지 모르겠지만 질문에 대답하기 위해 스택의 크기는 제한되어 있습니다. 대부분의 시스템에서

float의 크기는 4 바이트 double8입니다. 따라서 double을 사용하여 데이터를 표현할 때 실제로는 float과 같은 두 배의 공간을 사용하게됩니다.

간단한 해결 방법 (가능한 경우) 스택 대신 HEAP에서 cvMat에 메모리를 할당하십시오. 이렇게하려면 cvMat 포인터를 선언하고 연산자를 사용하여 공간을 할당하십시오.

Thread Management 문서는 스택의 크기가 아이폰 OS 메인 쓰레드의 보조 스레드 1 mb 및 512K 것을 말한다. 메인 스레드에서 처리의 핵심을 수행해야 할 수도 있습니다.

+0

감사합니다. OpenCV 코드 전체를 검토하고 리팩토링했지만 동일한 문제가 계속 발생했습니다. 더 자세히 살펴본 후 작동 스레드에 할당 된 메모리 양과 관련이 있다고 생각하십시오. 이것을 다시 확인해야하지만 iOS v4.1이 iOS v4.2 이상보다 높은 할당량을 가지고 있다고 생각하십시오. 이 경우에는 쉽게 수정할 수 있어야한다고 생각합니다. 즉, 더 큰 스택 크기로 처리 할 새 스레드를 만듭니다. – Josh

+0

답변이 업데이트되었습니다. – karlphillip

+0

여전히 동일한 문제가 남아 있습니다. 이러한 문제로 인해 포즈를 결정하는 대체 구현을 살펴보고 있습니다. 코드를 거치면서 메모리 요구 사항이 적고 가능한 한 많이 힙을 이동할 수있게하려고했습니다. 또한 다른 스레드에서 처리를 실행 해 보았습니다. 누구든지 각 스레드에 대한 스택 사용량을 볼 수있는 도구가 있는지 알고 있습니까? – Josh

관련 문제