#ifndef FEED_LEVEL_DETECTOR_H
#define FEED_LEVEL_DETECTOR_H

#include <opencv2/opencv.hpp>
#include <string>
#include <chrono>

class FeedLevelDetector {
public:
    FeedLevelDetector() ;

    // 设置采集频率（秒）
    void setCaptureInterval(int interval);

    // 开始检测（从摄像头）
    void startDetectionFromCamera();

    // 处理图像并返回饲料距离顶部的像素距离
    float detectFeedLevel(const std::string& imagePath);
    
private:
    bool useCamera; // 标志位
    int captureInterval; // 采集间隔（秒）
    cv::VideoCapture camera;

    // 预处理图像
    cv::Mat preprocessImage(const cv::Mat& input);
    
    // 检测饲料表面
    float findFeedSurface(const cv::Mat& image);
    
    // 显示结果
    void displayResult(cv::Mat& image, float distance);

    // 时间戳记录
    std::chrono::time_point<std::chrono::system_clock> lastCaptureTime;

    // 检查是否到达采集时间
    bool shouldCaptureNow();
};

#endif // FEED_LEVEL_DETECTOR_H