2015-04-21 55 views
2

有什麼辦法可以將opencv mat對象轉換爲base64。C++ OpenCV:將mat轉換爲base64,反之亦然

我用的是以下網址base64編碼和解碼:

http://www.adp-gmbh.ch/cpp/common/base64.html

下面是代碼片段:

const的無符號字符* inBuffer =的reinterpret_cast(image.data);

+1

可能相關:http://stackoverflow.com/questions/28003981/opencv- cvmat-to-stdifstream-for-base64編碼 – NathanOliver

+0

**爲什麼**你是否在嘗試這樣做?編碼二進制數據,像一個圖像到base64將導致可怕的膨脹。 – berak

+0

在C++和java之間傳送圖像數據。我可以很容易地使用java將圖像數據轉換爲base64。而將opencv mat轉換爲base64是忙碌的 –

回答

2

我遇到了幾乎相同的問題,但我試圖將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); 
1

我已經創造了這個使用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); 
相關問題