dlib 构建是没有DLIB_BUILD_SHARED_LIBS
时间: 2023-07-29 09:05:40 浏览: 46
dlib 在默认情况下会构建为静态库(static library),因此没有 DLIB_BUILD_SHARED_LIBS 这个选项。如果你需要构建为动态库(shared library),可以手动修改 CMakeLists.txt 文件,将以下代码注释掉:
```
# This line builds dlib as a static library by default
add_library(dlib ${all_dlib_cpp})
```
然后添加以下代码:
```
# Uncomment the following lines to build dlib as a shared library
#set(DLIB_ISO_CPP_ONLY ON)
#add_library(dlib SHARED ${all_dlib_cpp})
```
保存文件后重新运行 CMake,并重新编译即可构建为动态库。注意,使用动态库需要确保正确配置了动态库搜索路径。
相关问题
dlib 19 未定义的标识符 net_type
如果你在使用dlib时遇到了“未定义的标识符net_type”错误,可能是因为你忘记了包含正确的头文件或链接dlib库。
请确保你已经在程序中包含了以下头文件:
```
#include <dlib/dnn.h>
```
并且在编译和链接你的程序时,使用了正确的dlib库文件。如果你使用的是CMake来构建你的项目,你可以添加以下命令来链接dlib库:
```
target_link_libraries(your_project dlib::dlib)
```
如果你手动编译你的程序,你需要在命令行中指定正确的dlib库路径和文件名。
c++ dlib 拿到 full_object_detection 后怎么做人脸矫正
拿到 `full_object_detection` 后,可以通过 `dlib::get_face_chips()` 函数将人脸图像切割出来,然后进行矫正处理。
具体操作步骤如下:
1. 从 `full_object_detection` 中获取人脸关键点坐标,通过 `dlib::image_window` 函数可以可视化显示人脸关键点。
```c++
dlib::image_window win;
win.set_image(img);
win.add_overlay(render_face_detections(shapes));
```
2. 利用 `dlib::get_face_chip_details()` 函数获取切割出的人脸图像的大小和位置信息,然后使用 `dlib::get_face_chips()` 函数将人脸图像切割出来。
```c++
std::vector<dlib::chip_details> dets;
const int size = 150;
dlib::get_face_chip_details(shapes, size, 0.25, dets);
std::vector<dlib::matrix<dlib::rgb_pixel>> faces;
dlib::get_face_chips(img, dets, faces);
```
3. 对切割出的人脸图像进行矫正处理,使其眼睛水平并且垂直方向对称。可以通过 `dlib::get_face_chip()` 函数获取人脸图像并进行矫正处理。
```c++
std::vector<dlib::matrix<dlib::rgb_pixel>> faces_aligned;
for (auto&& face : faces)
{
// 将人脸图像进行矫正
auto shape = sp(face, dlib::rectangle(0, 0, face.nc(), face.nr()));
auto face_chip = dlib::get_face_chip(face, shape);
faces_aligned.push_back(face_chip);
}
```
4. 处理完毕后,可以将切割并矫正后的人脸图像保存起来,或者进行人脸识别等其他操作。