没有opencv_world和编译报错 直接尝试用下面shell自动化脚本
#!/bin/bash
set -e
echo "================= 🚀 一键 OpenCV + SeetaFace2 编译开始 ================="
# 配置路径
OPENCV_SRC=/home/book/nfs_rootfs/opencv-4.9.0 #opencv的path
OPENCV_CONTRIB=/home/book/nfs_rootfs/opencv_contrib #opencv_contrib的path
SEETA_SRC=/home/book/nfs_rootfs/opencv/SeetaFace2 #seetface的path
INSTALL_DIR=/opt/opencv #编译完后的模块的path
# 1. 清理旧安装
echo "👉 清理旧安装目录:$INSTALL_DIR"
sudo rm -rf $INSTALL_DIR
sudo mkdir -p $INSTALL_DIR
# ================= 2. 编译 OpenCV ===================
echo "🔧 编译 OpenCV中..."
cd $OPENCV_SRC
rm -rf build && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
-DOPENCV_EXTRA_MODULES_PATH=$OPENCV_CONTRIB/modules \
-DBUILD_opencv_world=ON \
-DWITH_CUDA=OFF \
-DWITH_OPENCL=OFF \
-DWITH_TBB=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_EXAMPLES=OFF \
..
make -j$(nproc)
sudo make install
if [ ! -f $INSTALL_DIR/lib/libopencv_world.so ]; then
echo "❌ OpenCV 编译失败,没有生成 libopencv_world.so"
exit 1
fi
echo "✅ OpenCV 编译成功!"
# ================= 3. 修复 SeetaFace2 CMakeLists =================
echo "🧩 下载并修复 SeetaFace2 CMakeLists.txt"
TMP_FIX_DIR=$(mktemp -d)
FIX_URL="https://yourdomain.com/SeetaFace2_CMakeLists_Fix.tar.gz"
wget -O $TMP_FIX_DIR/fix.tar.gz $FIX_URL
tar -zxvf $TMP_FIX_DIR/fix.tar.gz -C $SEETA_SRC --strip-components=1
echo "✅ 修复 CMakeLists 完成!"
# ================= 4. 编译 SeetaFace2 =================
echo "🔧 开始编译 SeetaFace2..."
SEETA_INSTALL=$INSTALL_DIR/seetaface2
sudo mkdir -p $SEETA_INSTALL/include
sudo mkdir -p $SEETA_INSTALL/lib
cd $SEETA_SRC
MODULES=(SeetaNet FaceLandmarker FaceDetector FaceRecognizer FaceTracker QualityAssessor)
for module in "${MODULES[@]}"; do
MODULE_DIR="$SEETA_SRC/$module"
if [ -d "$MODULE_DIR" ]; then
echo "🛠 编译模块:$module"
cd $MODULE_DIR
rm -rf build && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$SEETA_INSTALL \
..
make -j$(nproc)
sudo make install
LIB_NAME=$(ls libSeeta*.so 2>/dev/null || echo "")
if [ -z "$LIB_NAME" ]; then
echo "❌ 模块 $module 编译失败,没有生成 libSeetaXXX.so"
exit 1
fi
echo "✅ 模块 $module 编译完成"
else
echo "⚠️ 模块目录不存在:$module,跳过"
fi
done
怎么执行自行百度 或者评论区 opencv的文件见上一张