나는 128 차원 디스크립터와 기능 일치를 수행하는 코드를 작업 중이다.별도의 * 더블 배열로 FLANN 사용
이미지의 모든 설명자는 std :: vector에 저장되며, InterestPoint에는 설명자 벡터 인 * double desc 멤버가 포함됩니다. * 어떻게 지금과이 플란넬 :: 매트릭스를 채울 수
std::vector<InterestPoint> ip1;
//processing for building vector containing interest points
flann::Matrix<double> input(new double[ip1.size()*128], ip1.size(), 128);
:
지금 내가 나중에 내가 같은 초기화 대략 가장 가까운 이웃 기능 매칭을 수행하기 위해 플란넬 매트릭스에서이 구조를 사용하려면 ip1 벡터의 모든 요소에서 double desc 멤버? 이것이 내가 시도한 것입니다.
for(size_t i = 0; i < ip1.size(); i++)
{
for(size_t j = 0; j < 128; j++)
{
input[i][j] = ip1[i].ivec[j];
}
}
컴파일되었지만 작동하지 않았습니다. flann은 연산자 []를 사용하여 flann :: Matrix의 모든 행에 액세스 할 수있는 방법을 제공하므로 Matrix 클래스는 행 주수입니다.
미리 감사드립니다.
"효과가 없다"는 것은 무엇을 의미합니까? 루프를 밟아서 액세스중인 인덱스의 ip1 및 입력 값이 유효한지 확인 했습니까? – aardvarkk
당신이 말한대로했는데 실제로 Flann에 포인터를 넣는 데 문제가 없었습니다. 문제는 내 포인터가 어떤 이유로 든 내가 호출 한 함수에서 유효하지 않다는 것이 었습니다. 어쨌든 시간 내 주셔서 감사합니다! – filipsch