2026-06-26 17:55:15 +08:00

49 lines
1.4 KiB
C++

#pragma once
#include "IDroneScrewAlgo.h"
#include <atomic>
#include <mutex>
#include <vector>
#ifdef DRONESCREW_STEREO_BOLT_DIRECT_LINK
#include "stereo_bolt/c_api.h"
#else
struct StereoBoltCtx;
#endif
/**
* @brief Adapter for AppAlgo/stereo_bolt_delivery.
*
* The class name is kept for compatibility with existing project files. The
* implementation links libstereo_bolt.so directly and feeds left/right Mono8
* camera buffers to the C API.
*/
class DroneScrewAlgoStub : public IDroneScrewAlgo
{
public:
DroneScrewAlgoStub();
~DroneScrewAlgoStub() override;
int Init(const DroneScrewAlgoParams& params) override;
int UnInit() override;
int Detect(const DroneScrewInputImage& leftImage,
const DroneScrewInputImage& rightImage,
DroneScrewResult& result) override;
int DetectDistance(const DroneScrewInputImage& leftImage,
const DroneScrewInputImage& rightImage,
DroneScrewResult& result) override;
int UpdateParams(const DroneScrewAlgoParams& params) override;
std::string GetVersion() const override;
private:
DroneScrewAlgoParams m_params;
StereoBoltCtx* m_ctx{nullptr};
std::string m_configPath;
std::string m_calibPath;
std::string m_modelPath;
std::string m_initError;
mutable std::mutex m_mutex;
std::atomic<bool> m_bInited{false};
};