2015-04-21 52 views
0

我試圖運行SiftGPU關於從相機抓取的OpenCV Mat中的幀,並且無法將Mat格式轉換爲SiftGPU採用的輸入格式。我沒有發現SiftGPU接受輸入的具體規範(在它的手冊中,它只是說一些數據指針)。任何人都成功實施了這個在OpenCV Mat上運行SiftGPU Mat

回答

0

如果你還在intrested,你可以像這樣傳遞數據:

sift.RunSIFT(mat.cols, mat.rows, mat.data, GL_BGR, GL_UNSIGNED_BYTE); 

如果你不想添加glew.h這些定義只是把這些代碼行

#define GL_UNSIGNED_BYTE 0x1401 
#define GL_BGR 0x80E0 
#define GL_BGRA 0x80E1 
#define GL_RGB 0x1907 
#define GL_RGBA 0x1908 
0

我可以這樣分享我的代碼:

cv::Mat myMat = imread("../data/800-4.jpg"); 
int width = myMat.cols; 
int height = myMat.rows; 
unsigned char *data = (uchar*)myMat.data;//GL_RGBA 
sift->RunSIFT(width, height, data, GL_RGB, GL_UNSIGNED_BYTE);