float[imgW * imgH * 3] 数据转换成std::vector<cv::Vec3f>
时间: 2024-01-20 10:02:53 浏览: 117
数据分离类用vector
可以使用以下代码将float[imgW * imgH * 3]数据转换成std::vector<cv::Vec3f>:
```c++
// imgData为float[imgW * imgH * 3]数据,imgW为图像宽度,imgH为图像高度
std::vector<cv::Vec3f> imgVec;
imgVec.reserve(imgW * imgH);
for (int i = 0; i < imgW * imgH; ++i) {
float b = imgData[i * 3];
float g = imgData[i * 3 + 1];
float r = imgData[i * 3 + 2];
imgVec.emplace_back(b, g, r);
}
```
这里利用了cv::Vec3f类型的构造函数,将每个像素点的BGR三个通道值转换成Vec3f类型,最后将其加入到std::vector<cv::Vec3f>中。注意,这里需要使用reserve()方法提前分配好vector的内存,以避免不必要的内存分配和拷贝。
阅读全文