Hello I am trying to extract the data from a SURF descriptor, when I try this with an ORB descriptor it works. When I use the SURF one the program quits with a segmentation fault 11 on the base64 encode line, I use the base64 function from this site: Encoding and decoding base64.
The exact problem is that the format for the ORB descriptor is CV_8UC1
and the SURF descriptor CV_32FC1
. So I must base64 encode a 32 bit float instead of a 8 bit unsigned char.
How can I do this?
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
NULL
. Also, see my edited answer. Your edited question is much better, and more accurately describes your actual problem. Also note that you will be much more likely to get good answers if your questions don't boil down to "please debug my code for me" requests. – Aurelius