dlib 没有cv_image
时间: 2023-07-21 20:07:52 浏览: 91
如果你在使用 dlib 库时遇到了 `cv_image` 类型不存在的问题,那可能是因为你的 dlib 版本过旧或者过新。`cv_image` 是一个便捷的类,它可以将 OpenCV 的图像转换为 dlib 库中的图像类型。该类在 dlib 库的早期版本中并不存在,直到 dlib 版本 19.7 才被引入。
如果你使用的是较新的 dlib 版本,可以尝试使用 `array2d` 类型代替 `cv_image` 类型。`array2d` 类型也可以表示图像数据,并且支持与 OpenCV 的 `Mat` 类型之间的转换。以下是使用 `array2d` 类型进行图像转换的示例代码:
```c++
#include <dlib/image_processing.h>
#include <dlib/opencv.h>
#include <opencv2/opencv.hpp>
using namespace dlib;
using namespace cv;
int main()
{
// 加载需要处理的图像
Mat img = imread("test.jpg");
// 将 OpenCV 的 Mat 转换为 dlib 的 array2d
array2d<bgr_pixel> dlib_img;
assign_image(dlib_img, cv_image<bgr_pixel>(img));
// 在 dlib 中进行图像处理
// ...
// 将 dlib 的 array2d 转换为 OpenCV 的 Mat
Mat processed_img = toMat(dlib_img);
// 保存处理后的图像
imwrite("result.jpg", processed_img);
return 0;
}
```
在本例中,我们首先将 OpenCV 的 `Mat` 类型转换为 dlib 的 `array2d` 类型,并在 dlib 中进行图像处理。然后将处理后的 `array2d` 类型再转换为 OpenCV 的 `Mat` 类型,并保存处理后的图像。