FeedLevelDetector.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef FEED_LEVEL_DETECTOR_H
  2. #define FEED_LEVEL_DETECTOR_H
  3. #include <opencv2/opencv.hpp>
  4. #include <string>
  5. #include <chrono>
  6. class FeedLevelDetector {
  7. public:
  8. FeedLevelDetector() ;
  9. // 设置采集频率(秒)
  10. void setCaptureInterval(int interval);
  11. // 开始检测(从摄像头)
  12. void startDetectionFromCamera();
  13. // 处理图像并返回饲料距离顶部的像素距离
  14. float detectFeedLevel(const std::string& imagePath);
  15. private:
  16. bool useCamera; // 标志位
  17. int captureInterval; // 采集间隔(秒)
  18. cv::VideoCapture camera;
  19. // 预处理图像
  20. cv::Mat preprocessImage(const cv::Mat& input);
  21. // 检测饲料表面
  22. float findFeedSurface(const cv::Mat& image);
  23. // 显示结果
  24. void displayResult(cv::Mat& image, float distance);
  25. // 时间戳记录
  26. std::chrono::time_point<std::chrono::system_clock> lastCaptureTime;
  27. // 检查是否到达采集时间
  28. bool shouldCaptureNow();
  29. };
  30. #endif // FEED_LEVEL_DETECTOR_H