2013-10-30 2 views
0

매트 유형의 OpenCV에서 일부 변수를 사용하고 템플릿 함수를 호출합니다. 그러나 인수 템플릿을 추론하기 때문에 컴파일 오류템플릿 인수를 추론 할 수 없습니다. - OpenCV 매트

에게 전화 기능을 생성 할 수 없습니다

Rot2Homo(rot, tmpMat, ssTo); 

라는 함수 템플릿 :

template <class NumType> 
void Rot2Homo(cv::Mat_<cv::Vec<NumType, 1>> rot, cv::Mat_<cv::Vec<NumType, 1>> trans, cv::Mat& Homo) 
{ 
    Homo = cv::Mat::zeros(4,4, cv::Vec<NumType, 1>); 

    rot.copyTo(Homo(Range(0,3), Range(0,3))); 
    trans.copyTo(Homo(Range(0,3), Range(3,4))); 
    Homo.at<cv::Vec<NumType, 1>>(3,3) = 1; 

    return Homo; 
} 

컴파일 오류 :

error C2784: 'void Rot2Homo(cv::Mat_<cv::Vec<NumType,1>>,cv::Mat_<cv::Vec<NumType,1>>,cv::Mat &)' : could not deduce template argument for 'cv::Mat_<cv::Vec<NumType,1>>' from 'cv::Mat' 

이 비슷한 사용법이 나타 났으며에서 성공적으로 해결되었습니다.. 그러나 여기에 오류가옵니다.

어떤 힌트를 주셔서 감사합니다!

답변

0

Rot2Homo 함수를 호출 할 때 NumType을 지정해야합니다. 예를 들어, 호출 할 때 Rot2Homo<float>(...);을 입력하십시오.

템플릿 유형은 런타임에 결정해야합니다. 템플리트는 일종의 런타임 추측이 아니며, 모든 유형에 대해 작성한 다음 원하는 유형에 대해 필요할 때 사용할 수 있습니다.

+0

hix! 부끄러운 줄 알아! 전화 구문을 잊어 버렸습니다. –

관련 문제