您好我想将OpenCV Mat图像发送到ftp服务器,而我的ftp函数的输入是uchar *
我可以使用 .data 方法访问Opencv图像的数据部分,但我不知道如何获取要放置的标题信息是在.data的前面并将整个发送为完整图片。所以我需要提取OpenCV Mat结构的头信息。
我还需要在图片的标题中添加一些信息,并将整个标题+数据更改为 uchar * ,以便我可以通过它发送。我需要这样的东西:
cv::Mat Myimage(100,100,CV_8UC1,cv::Scalar::all(0));
uchar * Myimagedata = Myimage.data;
uchar * Myimageheader = Header_Extractor(Myimage);
uchar * Complete_Image = Myimageheader + Myimagedata;
SEND_FTP(Complete_Image);
答案 0 :(得分:1)
为什么不发送png或jpg encoded image?出于以下几个原因,您应该更喜欢这种方法:
vector<uchar> buffer;
imencode(".png", MyImage, buffer);
SEND_FTP(&(buffer[0]));
嗯,等等,这需要一个发送功能,你也可以传递长度。您的SEND_FTP函数可能会尝试strlen,这对二进制数据无效。 (与你原来的想法相同的问题,顺便说一句)
另外,您必须将ftp连接切换为二进制模式。
我非常怀疑,你真的希望将cv :: Mat序列化到ftp服务器(如何在另一端保存,甚至?),但如果> em>你想发送一个,你可能会更好,不发送完整的Mat标题(它是一个复杂的野兽),但更简单的东西,如行,列,类型,数据(并确保,你的Mat isContinous() )。