123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #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
|