有什麼辦法可以將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是忙碌的 –