array2d<rgb_pixel> 转 cv::mat
时间: 2024-01-20 08:02:57 浏览: 84
Array2D(2.2).ZIP_array2D_phase array_幅相误差 阵列_阵列_阵列 matlab
5星 · 资源好评率100%
你可以使用 OpenCV 库中的 `cv::Mat` 类来实现 `array2d<rgb_pixel>` 到 `cv::Mat` 的转换。下面是一个简单的示例代码:
```c++
// 假设有一个名为 img 的 array2d<rgb_pixel> 对象
cv::Mat mat(img.nr(), img.nc(), CV_8UC3);
for (int r = 0; r < img.nr(); ++r) {
for (int c = 0; c < img.nc(); ++c) {
const dlib::rgb_pixel& p = img[r][c];
cv::Vec3b& q = mat.at<cv::Vec3b>(r, c);
q[0] = p.blue;
q[1] = p.green;
q[2] = p.red;
}
}
```
这里我们先创建了一个 `cv::Mat` 对象,并设置其大小为 `img.nr()` 行、`img.nc()` 列,像素格式为 8 位 3 通道。然后我们使用双重循环遍历 `img` 中的每个像素,并将其转换为 `cv::Vec3b` 类型的像素值,再将其赋值给对应位置的 `mat` 中的像素。注意到 `cv::Mat` 中的像素格式是 BGR,而 `dlib::rgb_pixel` 中的像素格式是 RGB,因此需要做一些通道的交换。
阅读全文