2011-08-03 9 views
0

C++에서 OpenCV를 사용하여 다른 디더링 기술을 만드는 중입니다. 현재 코드가 매트가 부동 소수 인 경우에만 작동합니다. 이 경우OpenCV Vec 데이터 형식

Mat image; 
cv::Vec3f pixel= image.at< float,3> 

이미지가 현재 플로트, 그것은 CV_32FC3이기보다 구체적 유형 : 나는 이런 식으로 뭔가가있는 경우 예를 들어 들은 말한다. 나는 이런 식으로 변경하려면 :

cv::Vec3f pixel= image.at< "Datatype",3> 

내가 매트에 대한 데이터 유형에 따라 수정할 수있는 변수로 데이터 형식을 나타내는 어쨌든이 있나요?

답변

0

아니요. 컴파일러가 컴파일 할 때 알아야하는 템플릿을 사용하고 있습니다. 이는 런타임시 데이터 유형을 변경할 수 없음을 의미합니다 (MS .NET과 달리).

템플릿을 "#define"과 같은 C++로 생각하십시오. 템플릿 함수는 사용 된 각 데이터 유형에 대해 &을 복제합니다.

조만간 사용하는 개별 데이터 형식을 지정해야합니다.

Vec3f는 실제로 "Vec < float, 3>"입니다. templateed 함수에 물건을 넣고 "Vec <>"과 "image.at"둘 다에 "float"대신에 템플릿 심볼을 사용할 수 있습니다.