2015-01-08 1 views
1

이미지의 서프 기능을 감지하고 yml 파일에 쓰고 있습니다. 그런 다음 yml 파일의 피쳐를 다시로드하여 객체를 감지하려고하지만 순간에 키포인트를로드하는 데 문제가있어 이미지에 그려야합니다.저장된 서프 키 포인트로드 중

cv::FileStorage fs("keypointsVW.yml", cv::FileStorage::WRITE); 
write(fs, "keypoints_1", keypoints_1); 
fs.release(); 

난과 같이 읽을 것을 시도하고있다 :

cv::FileStorage fs2("keypointsVW.yml", cv::FileStorage::READ); 
read(fs2, "keypoints_1", keypoints_1); 
fs2.release(); 

을하지만이 오류의 호스트를 생산하고

그래서 같은 키포인트를 쓰고 있어요.

탐지 및 그릴 코드 :

cv::Mat img_1 = cv::imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE); 
    int minHessian = 400; 
    cv::SurfFeatureDetector detector(minHessian); 
    std::vector<cv::KeyPoint> keypoints_1; 
    detector.detect(img_1, keypoints_1); 
    cv::Mat img_keypoints_1; 
    //......write code 
    //.......read code 
    drawKeypoints(img_1, keypoints_1, img_keypoints_1); 
    imshow("keypoints_1", img_keypoints_1); 

답변

2

다른 같은 문제가 나는 경우 누구라도 여기에 게시 것, 해결책을 발견.

std::vector<cv::KeyPoint> testPoints; 
cv::FileStorage fs2("keypointsVW.yml", cv::FileStorage::READ); 
cv::FileNode kptFileNode = fs2["keypointsVW"]; 
read(kptFileNode, testPoints); 
fs2.release(); 
관련 문제