2013-07-27 49 views
0

我目前正在編寫一個項目,該項目將允許機器人根據天花板的照片找到它的位置。攝像機安裝在機器人上並直接面向天花板(意味着照片的中心始終被認爲是機器人的位置)。這個想法是使用第一張照片建立x,y軸的0,0位置和方向,然後找到該照片和下一張照片之間的距離和旋轉(將在稍微不同的位置拍攝)並建立新的0, x的位置和方向,y軸等。使用SIFT查找兩張天花板照片之間的距離

#include <opencv/cv.h> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/nonfree/nonfree.hpp> 
#include <iostream> 

using namespace cv; 
using namespace std; 

int main() 
{ 
    Mat img = imread("ceiling.jpg"); 

    if (img.empty()) 
    { 
     cout << "Cannot load an image!" << endl; 
     getchar(); 
     return -1; 
    } 

    SIFT sift(10); //number of keypoints 

    vector<KeyPoint> key_points; 

    Mat descriptors, mascara; 
    Mat output_img; 

    sift(img,mascara,key_points,descriptors); 
    drawKeypoints(img, key_points, output_img); 
    namedWindow("Image"); 
    imshow("Image", output_img); 
    imwrite("image.jpg", output_img); 
    waitKey(0); 

    return 0; 
} 

有沒有可能幫我做的任何功能:我使用(迄今爲止只有一個圖像)以下算法發現照片上的特點是什麼?

回答

0

如果圖像相隔不遠,光流可能是更好的選擇。在cv :: calcOpticalFlowPyrLK上查找關於如何使用它的詳細信息。

相關問題