有什么办法可以将opencv mat对象转换为base64。C++ OpenCV:将mat转换为base64,反之亦然
我用的是以下网址base64编码和解码:
http://www.adp-gmbh.ch/cpp/common/base64.html
下面是代码片段:
const的无符号字符* inBuffer =的reinterpret_cast(image.data);
有什么办法可以将opencv mat对象转换为base64。C++ OpenCV:将mat转换为base64,反之亦然
我用的是以下网址base64编码和解码:
http://www.adp-gmbh.ch/cpp/common/base64.html
下面是代码片段:
const的无符号字符* inBuffer =的reinterpret_cast(image.data);
我遇到了几乎相同的问题,但我试图将Mat编码为jpeg格式,然后将其转换为base64。
该代码在page工作正常!
因此,这里是我的代码:
VideoCapture cam(0);
cam>>img;
vector<uchar> buf;
imencode(".jpg", img, buf);
uchar *enc_msg = new uchar[buf.size()];
for(int i=0; i < buf.size(); i++) enc_msg[i] = buf[i];
string encoded = base64_encode(enc_msg, buf.size());
,如果你只是想一个垫转换成的base64,你需要确保垫尺寸和渠道。对于CV_8UC1,这将工作:
string encoded = base64_encode(img.data, img.rows * img.cols);
我已经创造了这个使用QT5和OpenCV的例子:
cv::Mat1b image;
this->cameraList[i]->getImage(image);
std::vector<uint8_t> buffer;
cv::imencode(".png", image, buffer);
QByteArray byteArray = QByteArray::fromRawData((const char*)buffer.data(), buffer.size());
QString base64Image(byteArray.toBase64());
base64ImageList.append(base64Image);
可能相关:http://stackoverflow.com/questions/28003981/opencv- cvmat-to-stdifstream-for-base64编码 – NathanOliver
**为什么**你是否在尝试这样做?编码二进制数据,像一个图像到base64将导致可怕的膨胀。 – berak
在C++和java之间传送图像数据。我可以很容易地使用java将图像数据转换为base64。而将opencv mat转换为base64是忙碌的 –