sherlockchou86 / VideoPipe

跨平台的视频结构化(视频分析)框架,觉得有帮助的请给个星星 : ) 。**VideoPipe下一版本正在开发中,在保证跨平台、易上手的前提下,预计性能直逼deepstream等各硬件平台官方框架**。
Apache License 2.0
1.16k stars 165 forks source link

编译错误:opencv2/freetype.hpp: No such file or directory #40

Closed zhangrui-wolf closed 2 months ago

zhangrui-wolf commented 2 months ago

执行 make -j8 后报错:

Scanning dependencies of target tinyexpr
[  1%] Building C object third_party/tinyexpr/CMakeFiles/tinyexpr.dir/tinyexpr.c.o
[  2%] Linking C shared library ../../libs/libtinyexpr.so
[  2%] Built target tinyexpr
Scanning dependencies of target tinyexpr_test
Scanning dependencies of target video_pipe
[  2%] Building CXX object third_party/tinyexpr/CMakeFiles/tinyexpr_test.dir/tinyexpr_test.cpp.o
[  5%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_ba_socket_broker_node.cpp.o
[  5%] Building CXX object CMakeFiles/video_pipe.dir/nodes/ba/vp_ba_stop_node.cpp.o
[  5%] Building CXX object CMakeFiles/video_pipe.dir/nodes/ba/vp_ba_jam_node.cpp.o
[  5%] Building CXX object CMakeFiles/video_pipe.dir/nodes/ba/vp_ba_crossline_node.cpp.o
[  5%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_embeddings_properties_socket_broker_node.cpp.o
[  6%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_embeddings_socket_broker_node.cpp.o
[  6%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_expr_socket_broker_node.cpp.o
[  7%] Linking CXX executable ../../samples/tinyexpr_test
[  7%] Built target tinyexpr_test
[  8%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_json_console_broker_node.cpp.o
[  8%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_json_kafka_broker_node.cpp.o
[  9%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_msg_broker_node.cpp.o
[ 10%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_plate_socket_broker_node.cpp.o
[ 10%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_xml_file_broker_node.cpp.o
[ 11%] Building CXX object CMakeFiles/video_pipe.dir/nodes/broker/vp_xml_socket_broker_node.cpp.o
[ 11%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_classifier_node.cpp.o
[ 12%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_enet_seg_node.cpp.o
[ 13%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_face_swap_node.cpp.o
[ 13%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_feature_encoder_node.cpp.o
[ 14%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_lane_detector_node.cpp.o
[ 15%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_mask_rcnn_detector_node.cpp.o
[ 15%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_openpose_detector_node.cpp.o
[ 16%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_ppocr_text_detector_node.cpp.o
[ 16%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_restoration_node.cpp.o
[ 17%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_sface_feature_encoder_node.cpp.o
[ 18%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_color_classifier.cpp.o
[ 18%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_detector.cpp.o
[ 19%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_feature_encoder.cpp.o
[ 20%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_plate_detector.cpp.o
[ 20%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_plate_detector_v2.cpp.o
[ 21%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_scanner.cpp.o
[ 21%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_trt_vehicle_type_classifier.cpp.o
[ 22%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_yolo_detector_node.cpp.o
[ 23%] Building CXX object CMakeFiles/video_pipe.dir/nodes/infers/vp_yunet_face_detector_node.cpp.o
[ 23%] Building CXX object CMakeFiles/video_pipe.dir/nodes/osd/vp_ba_crossline_osd_node.cpp.o
In file included from /home/wolf/Workspace/VideoPipe/nodes/osd/vp_ba_crossline_osd_node.cpp:2:
/home/wolf/Workspace/VideoPipe/nodes/osd/vp_ba_crossline_osd_node.h:4:10: fatal error: opencv2/freetype.hpp: No such file or directory
    4 | #include <opencv2/freetype.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/video_pipe.dir/build.make:479: CMakeFiles/video_pipe.dir/nodes/osd/vp_ba_crossline_osd_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:171: CMakeFiles/video_pipe.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

系统:Ubuntu 20.04.6 LTS OpenCV:4.8.1 或者 4.6.0

由于系统库安装的版本为 4.2,遂自行编译了4.8.1,由于4.8.1报上述错误,怀疑版本过高,于是编译了 4.6.0 版本后进行再次编译,同样的报错。网上搜索报错信息后,怀疑是编译 OpenCV 时 WITH_FREETYPE 选项没有开启,于是开启后再次对 OpenCV 4.6.0 与 4.8.1 版本进行再次编译,之后重新编译本项目,但仍报相同错误。

cmake编译指令类似于:

cmake -DOpenCV_DIR="/home/wolf/library/opencv_compile/opencv_4.8.1_build/install/lib/cmake/opencv4" ..
sherlockchou86 commented 2 months ago

安装OpenCV的时候需要同时安装扩展包,详细参见 https://github.com/sherlockchou86/VideoPipe/blob/master/doc/env.md

可以加微信群在里讨论

zhangrui-wolf commented 2 months ago

我在编译OpenCV的时候启用了使用额外模块构建的选项。

我晚上下班后加一下微信群讨论一下。

sherlockchou86 commented 2 months ago

最好看一下cmake阶段的打印输出,可能由于某些系统环境依赖,freetype模块被ignored了,后面编译就会出错。

zhangrui-wolf commented 2 months ago

好的,我是cmake配合ninja进行编译的,ninja 编译的时候只要不报错一般不输出任何信息,我晚上尝试一下加些选项输出信息看一下,感谢!

zhangrui-wolf commented 2 months ago

2024年4月21日已解决 问题原因:Opencv contrib库中的freetype模块在配置阶段被忽略了,忽略的原因是缺少依赖库。 在Ubuntu 20.04中,除了文档中提及的需要安装的库,建议安装:

apt install harfbuzz libfreetype-dev libgtk2.0-dev pkg-config
GDbbq commented 3 weeks ago

我也遇到了这个问题,但是使用sudo apt-get install libharfbuzz-dev libfreetype-dev libgtk2.0-dev 并没有解决