2011-05-14 5 views
2

이미지의 픽셀과 함께 몇 가지 추가 정보를 저장하는 가장 좋은 방법은 무엇입니까? 지금은 vector<vector<vector<Info*>>>과 같은 것을 생각하고 있는데 두 개의 첫 번째 인덱스는 해당 픽셀의 좌표를 나타냅니다. 더 좋은 점이 있나요?cv :: Mat 요소와 함께 추가 정보 저장

답변

1

"최상의"단일 솔루션이없는 경우가 많습니다.

벡터의 벡터 벡터는 약간 복잡해 보이지만 각 좌표에 항상 많은 관련 정보가 있으면 좋을 수 있습니다. 픽셀 만의 몇 가지 추가 정보가있는 경우

, 당신은 아마도 몇 좌표에 대한 더 스파 스 데이터 구조

map<coordinates, info> 

만 저장 정보를 사용할 수 있습니다.

1

정보가 복잡하지 않은 경우 (최대 4 채널 벡터로 설명 될 수 있음) 정보를 사용자와 동일한 크기의 다른 cv :: Mat에 저장할 수 있습니다. 각 픽셀에 대한 정보가 더 복잡한 경우 각 행렬 요소에 대한 포인터를 저장할 수 : 는 sizeof (CV_32S) == sizeof 연산자 (ComplexStruct *)

:이 방법을 시도하기 전에

cv::Mat additionalInfo(image.size(), CV_32S); // CV_32S = int (usually the type used for pointers) 
additionalInfo.at<CV_32S>(col,row) = new ComplexStruct; // Writing 
ComplexStruct* info = additionalInfo.at<CV_32S>(col,row); // Reading 

사항을 확인

관련 문제