说实话,我很惊讶到目前为止没有人遇到过这种情况.我正在将一张来自OpenCV的图片加载到cv :: Mat中,在我通过套接字发送之前,我想要base64编码.
对于base64,我使用的是libb64,因为它是Debian/Ubuntu的原生,并且易于使用且速度非常快.编码函数将std :: ifstream作为参数,并输出std :: ofstream.
#include <opencv2/opencv.hpp>
#include <b64/encode.h>
#include <fstream>
using namespace cv;
Mat image;
image = imread( "picture.jpg", CV_LOAD_IMAGE_COLOR );
if ( image.data )
{
std::ifstream instream( ???, std::ios_base::in | std::ios_base::binary);
std::ofstream outstream;
// Convert Matrix to ifstream
// ...
base64::encoder E;
E.encode( instream, outstream );
// Now put it in a string, and send it over a socket...
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何填充cv :: Mat的内流.谷歌搜索,我发现我可以通过列和行迭代cv :: Mat,并得到每个(我假设的像素)RGB值:
for ( …
Run Code Online (Sandbox Code Playgroud)