2013-05-01 9 views
1

내 자신의 직렬 대기열에서 매트 이미지를 처리하고 있습니다. 이로 인해 충돌이 발생합니다. 처리가 끝나면 Q에서 매트 이미지를 유지하고 Q에서 놓을 수 있습니까?OpenCV iOS 블록 크래시

- (void)processImage:(Mat&)image 
{ 
    // Do some OpenCV stuff with the image 
    dispatch_async(imageProcessingQ, ^{ 
     [self.imageController processImage:image]; 
    }); 
} 
+0

오류 로그를 제공 할 수 있습니까? –

답변

0

나중에 비동기 적으로 실행되는 블록 그것을 사용한 후, C++ 참조 image 포착하고있다. 이 참조는 그 당시에는 더 이상 유효하지 않습니다.

+0

네, 맞습니다. 나는 객체를 유지하고 이와 같이 객체를 해제하고 싶습니다. OpenCV (C++ 객체)에서 어떻게합니까? - (무효) processImage (매트 &) 화상 {// [화상 보유] dispatch_async (imageProcessingQ^{ [self.imageController processImage : 이미지] // [화상 releae] }) ; } –

+0

@LessaAntony : 아마도 'Mat'대신 'Mat'을 대신 전달할 수 있습니다. – newacct

+0

processImage()는 OpenCV에서 제공 한 콜백 함수입니다.이 함수는 참조를 제공합니다. 내가 복제하고 제 방법으로 제공하기를 원하나요? 복제는 데이터를 복사 할 때 비용이 많이 듭니다. –