iOS에서 OpenCV를 사용하여 2 개의 이미지 사이의 이동을 감지하려고합니다. 내가 사용한 함수는 phaseCorrelate이고, 주어진 Point2d가 2 cv::Mat
인 이미지이다. UIImage를 Mat으로 변환하여 here 샘플 코드를 따른 다음 Mat
을 CV_32F
유형으로 변환합니다. 그러나 나는이 오류가에 보관 : 그 오류가 발생했습니다 왜 CV_32F
에 매트 유형을 전환했기 때문에 나는 이해가 안iOS 및 OpenCV 오류 : PhaseCorrelateRes에서 어설 션 실패
OpenCV Error: Assertion failed (src1.type() == CV_32FC1 || src1.type() == CV_64FC1) in phaseCorrelateRes, file /Users/alexandershishkov/dev/opencvIOS/opencv-2.4.7/modules/imgproc/src/phasecorr.cpp, line 498
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /Users/alexandershishkov/dev/opencvIOS/opencv-2.4.7/modules/imgproc/src/phasecorr.cpp:498: error: (-215) src1.type() == CV_32FC1 || src1.type() == CV_64FC1 in function phaseCorrelateRes
. 참고로 : 내가 CV_64F로 변환하지 않은 이유는 거대한 메모리 비용과 iOS의 앱이 과도한 메모리 때문에 즉시 닫힐 것이기 때문입니다.
#ifdef __cplusplus
-(void)alignImages:(NSMutableArray *)camImages
{
int i;
Mat matImages, refMatImage, hann;
Point2d pcPoint;
for (i = 0; i < [camImages count]; i++) {
if(i == 0){
UIImageToMat([camImages objectAtIndex:i], refMatImage);
refMatImage.convertTo(refMatImage, CV_32F);
createHanningWindow(hann, refMatImage.size(), CV_32F);
}
else{
UIImageToMat([camImages objectAtIndex:i], matImages);
matImages.convertTo(matImages, CV_32F);
pcPoint = phaseCorrelate(refMatImage, matImages, hann);
NSLog(@"phase correlation points: (%f,%f)",pcPoint.x, pcPoint.y);
}
}
NSLog(@"Done Converting!");
}
#endif