1
FileStorage를 사용하여 키포인트 (벡터), 설명자 (매트) 및 기타 사항을 yml 파일에 성공적으로 쓸 수있었습니다. 그러나 이미지 쌍 사이의 일치를 계산 한 후에는 일치 항목을 파일에 쓸 수 없습니다.<Dmatch>을 FileStorage에 작성하는 방법
DMatch가 distance, trainIdx 등의 필드가있는 구조체 인 것 같지만 파일에이 방법을 쓰는 사람이 있습니까?
아니면 거리 벡터, trainIdx 벡터 등을 작성해야합니까?
std::vector<cv::DMatch> matches;
for(int i=0;i<numims-1;i++){
for(int j=i+1;j<min(i+10,numims);j++){
matches = MatchImagePair(i,j);
//write the matches
std::string matchfile = matchpath + "matchesij.yml";
cv::FileStorage fs(matchfile, cv::FileStorage::WRITE);
write(fs, "matches", matches);
fs.release();
}
}
matchesij는 i와 j의 번호를 포함해야하지만 간결하게 편집 : 몇 가지 코드를 보여
편집. 당신은 파일 저장을 위해 >>
연산자를 오버로드 할 수
std::vector<cv::DMatch> Matches::MatchImagePair(int idx1, int idx2){
//matcher type
cv::BFMatcher matcher(cv::NORM_L2);
//given descrs1 and descrs2, match the 2 descriptors
matcher.knnMatch(descrs1, descrs2, matches12, 2);
matcher.knnMatch(descrs2, descrs1, matches21, 2);
//various tests, returns vector<DMatch> given keypts1, keypts2 (for RANSAC)
matches = DoVariousTests(matches12, matches21, keypts1, keypts2);
return matches;
}
나는 오늘이 밖으로 시도하고, 나는 그것이 작동하도록 한 번 감사를 투표 할 수 있습니다! – adinutzyc21