您好,我正在尝试从 SURF 描述符中提取数据,当我使用 ORB 描述符尝试此操作时,它可以工作。当我使用 SURF 时,程序退出,并在 base64 编码行出现分段错误 11,我使用该站点的 base64 函数:Encoding and decoder base64。
确切的问题是 ORB 描述符的格式是CV_8UC1
SURF 描述符CV_32FC1
。所以我必须 base64 编码一个 32 位浮点数而不是 8 位无符号字符。
我怎样才能做到这一点?
Mat desc;
vector<KeyPoint> kp;
SurfFeatureDetector detector(500);
SurfDescriptorExtractor extractor;
// OrbDescriptorExtractor extractor; This works
detector.detect(image, kp);
extractor.compute(image, kp, desc);
desc.convertTo(desc, CV_8UC1, 255, 0);
unsigned char const* inBuffer = reinterpret_cast<unsigned char const*>(desc.data);
unsigned int in_len = desc.total();
string code = base64_encode(inBuffer, in_len).c_str(); // This line causes the error