string - 将一串字节转换为 cv::mat

标签 string opencv mat

我需要实现一个函数,该函数接收包含图像字节的字符串(通过 boost 套接字连接接收)并将信息转换OpenCV简历::垫

我还知道图像的宽度和高度及其大小(以字节为单位)。我的函数如下所示:

void createImageFromBytes(const std::string& name, std::pair<int,int> dimensions, const std::string& data)
{
   int width,height;
   width = dimensions.first;
   height = dimensions.second;
   //convert data to cv::Mat image

   std::string filepng = DATA_PATH"/" + name +".png";
   imwrite(filepng, image);
}

执行此操作的最佳方法是什么? OpenCV 是否有从字符串中获取 Mat 的构造函数?

最佳答案

OpenCV Mat 有一个来自 vector<byte> 的构造函数,但这不是那么直观。您需要先通过这种方式将字符串转换为向量:

std::vector<byte> vectordata(data.begin(),data.end());

然后您可以从向量创建一个 cv::Mat:

cv::Mat data_mat(vectordata,true);

您还需要对图像进行解码(检查允许使用的类型的文档,png、jpg,具体取决于 OpenCV 版本)

cv::Mat image(cv::imdecode(data_mat,1)); //put 0 if you want greyscale

现在您可以检查生成的图像大小是否与您发送的图像大小相同:

cout<<"Height: " << image.rows <<" Width: "<<image.cols<<endl;

关于string - 将一串字节转换为 cv::mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705578/

相关文章:

java - 比较两个词(字符串)

c# - 打开CV : set model position using rotation and translation vector

python - opencv python whie加载视频时出错

android - 打开CV java.lang.UnsatisfiedLinkError:n_Mat随机发生

python - 有没有办法读取字符串并将字符串中的每个字母转换为另一个字符串中的项目?

android - 如何清除蓝牙输入流缓冲区

python - 如何删除多个子串?

c++ - “Project.exe 已触发断点。”

opencv - 将轮廓点的向量复制到垫子中

android - 如何将android中的堆转储转换为eclipse格式