我正试图在相机上使用OpenCV Mat抓取框架SiftGPU,并且无法将Mat格式转换为SiftGPU采用的输入格式。我没有找到任何关于输入SiftGPU接受的具体规范(在其手册中;它只是说一些数据指针)。有人成功实现过这个吗?
答案 0 :(得分:0)
如果您仍然感兴趣,可以像这样传递数据:
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
答案 1 :(得分: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);