百度顔認識SDKのSpring Boot統合実装例

1. 概要

以下は顔認証SDKをSpring Bootアプリケーションに統合する際の推奨事項です。

2. SDK統合手順

  1. 対応バージョンは6.1.3が最適
    8.xバージョンはサーバーとの互換性問題が確認されています。
  2. ライブラリパスをプロジェクト外部に配置してください。
  3. Spring Boot起動時にSDKを初期化し、必要に応じてAPIを呼び出せるようにします。

3. ライブラリの設定

  1. OSごとのdllファイルをプロジェクトのsrcディレクトリに配置(構造は変更しないでください)。
  2. Face.javaに条件付きインスタンス化処理を追加
@Component
@Conditional(FaceSdkCondition.class)
public class FaceService {
    // SDK API実装
}

4. ライブラリロード処理

@Autowired
public FaceService(Environment env) {
    String dllPath = env.getProperty("face-sdk.dllPath");
    System.load(dllPath + "BaiduFaceApi.dll");
    System.load(dllPath + "opencv_java320.dll");
}

5. 初期化・解放処理

@PostConstruct
public void initialize() {
    int result = faceApi.sdkInit(dllPath);
    if(result != 0) {
        log.error("SDK初期化失敗: {}", result);
    }
}

@PreDestroy
public void release() {
    faceApi.sdkDestroy();
}

6. 起動条件判定クラス

public class FaceSdkCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return "true".equals(context.getEnvironment().getProperty("face-sdk.enabled"));
    }
}

7. 設定ファイル

face-sdk:
  enabled: true
  dllPath: D:\\FaceLib\\
  imagesPath: D:\\FaceImages\\

8. Maven依存設定

mvn install:install-file -DgroupId=cn.dyina \
    -DartifactId=opencv-jni \
    -Dversion=1.0 \
    -Dfile=D:\FaceLib\opencv-320.jar

9. サービスクラス実装例

@Service
public class FaceServiceImpl {
    public String registerFace(String imagePath, String userId) {
        Mat imageMat = Imgcodecs.imread(imagePath);
        long matrixAddress = imageMat.getNativeObjAddr();
        JSONObject result = Face.userAddByMat(matrixAddress, userId, "GROUP001", "test");
        return result.getString("message");
    }
}

10. リクエストハンドラ

@RestController
@CrossOrigin
public class FaceController {
    @PostMapping("/register")
    public ResponseEntity<String> registerFace(@RequestParam String imageBase64) {
        String fileName = UUID.randomUUID() + ".jpg";
        Base64ToImage.saveImage(imagesPath, fileName, imageBase64);
        String result = faceService.registerFace(imagesPath + fileName, "user123");
        return ResponseEntity.ok(result);
    }
}

11. 注意事項

  • com.jni.faceパッケージ内のサンプルコードは必要に応じて削除してください。
  • dbディレクトリはSDK初期化時に自動生成されます。
  • ホットスワップ機能は使用しないでください。
  • 商用利用の場合、ライセンス取得が必要です。

タグ: 百度顔認証SDK Spring Boot Java JNI Maven

7月10日 00:45 投稿