Я разрабатываю приложение ios, используя opencv. В настоящее время, после получения изображения с камеры, я хочу отправить это изображение на сервер. Поэтому я конвертирую изображение из формата Mat в NSString.
Как вы можете видеть ниже:
//Convert image from mat format to vector unchar
cv::vector<uchar> buff;//buffer for coding
cv::vector<int> param = cv::vector<int>(2);
param[0]=CV_IMWRITE_JPEG_QUALITY;
param[1]=95;//default(95) 0-100
cv::imencode(".jpg",image,buff,param);
//Convert from vector unchar to string
std::string imageString(buff.begin(), buff.end());
NSLog(@"%lu",imageString.size());
//Convert from string to NSString
imageData = [NSString stringWithCString:imageString.c_str() encoding:[NSString defaultCStringEncoding]];
NSLog(@"%@",imageData);
NSLog(@"%lu",(unsigned long)imageData.length);
Во-первых, я конвертирую изображение из mat в unchar-вектор. Затем преобразуйте этот вектор в std-строку с именем imageString. Наконец, преобразуем эту std-строку в NSString imageData.
Однако размер imageString равен 80804, который, я думаю, должен быть правильным. Но размер imageData - 4. Я не знаю, что здесь происходит.
Вот код:
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:imageData, @"imageData", latitude, @"latitude", longitude, @"longitude", nil];
И ответ от сервера:
2014-08-27 15: 09: 05.438 FaceDetection [14540: 60b] ËÿËâ53.28588327-6.21796840
С наилучшими пожеланиями
Избегайте использования NSSting, поскольку он будет отбрасывать непечатаемые символы. Используйте NSData для отправки информации об изображении на ваш сервер.