我正在使用opencv开发一个ios应用程序。目前,我从相机获取图像后,我想将此图像发送到后端服务器。所以我将图像从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矢量。然后将此向量转换为名为imageString的std字符串。最后,将此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]ËÿËâ.52.28588327-6.21796840
祝你好运
答案 0 :(得分:1)
避免使用NSSting,因为它会丢弃不可打印的字符。使用NSData将图像信息发送到您的服务器。