C++ 将jpg的string流转成cv::Mat
时间: 2023-11-14 08:06:38
浏览: 147
可以使用 OpenCV 库中的 `imdecode` 函数将 JPG 格式的字符串流转换成 `cv::Mat` 对象。
具体代码如下:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
// 假设已经从文件中读取了 JPG 图像的字符串流,存储在 jpg_str 变量中
string jpg_str; // 假设已经从文件中读取了 JPG 图像的字符串流
vector<uchar> data(jpg_str.begin(), jpg_str.end());
Mat img = imdecode(data, IMREAD_COLOR);
// 显示图像
namedWindow("JPG Image", WINDOW_NORMAL);
imshow("JPG Image", img);
waitKey(0);
return 0;
在上面的代码中,我们首先将 JPG 图像的字符串流转换为 `vector<uchar>` 类型的数据,然后使用 `imdecode` 函数将其解码为 `cv::Mat` 对象。最后,我们使用 OpenCV 库提供的函数显示图像。注意,这里使用了 `IMREAD_COLOR` 标志来指定解码后的图像为彩色图像。
相关问题
C++ cv::imdecode怎么把字节流转成cv::Mat
要使用cv:
C++中如何把cv::Mat转成ncnn::Mat
要将 OpenCV 类型的 cv::Mat 转换为 ncnn 库中的 ncnn::Mat,可以通过以下步骤实现:
1. 确定输入的 cv::Mat 对象的数据类型和通道数。
例如,假设输入的 cv::Mat 对象的数据类型为 CV_32FC3,表示每个像素由 3 个 32 位浮点数组成,通道数为 3。
2. 创建一个空的 ncnn::Mat 对象,并设置它的数据类型和通道数。
例如,可以使用以下代码创建一个数据类型为 ncnn::Mat::PIXEL_RGB 和通道数为 3 的 ncnn::Mat 对象:
ncnn::Mat input = ncnn::Mat::from_pixels_empty(0, 0, ncnn::Mat::PIXEL_RGB);
input.create(w, h, 3, sizeof(float));
```