18 #include <opencv2/core/core.hpp>
29 std::chrono::high_resolution_clock::time_point mLastTick;
37 SourceHandler(
int webcamIndex = 0,
const cv::Size & resolution = { 0, 0 } );
38 SourceHandler(
const std::string & videoFilePath,
bool loopVideo,
bool processAllFrames );
42 void useUsbCamera(
int webcamIndex = 0,
const cv::Size & resolution = { 0, 0 } );
43 void useVideoFile(
const std::string & videoFilePath,
bool loopVideo,
bool processAllFrames );
44 void useVideoStream(
const std::string & videoStreamUrl );
51 bool isUsbCamera()
const;
52 bool isVideoFile()
const;
53 bool isVideoStream()
const;
55 cv::Size getSourceResolution()
const;
56 int getSourceFps()
const;
58 enum class Status : unsigned char { OK, NOT_INITIALIZED, NOT_READY, FAILURE, STREAM_RECONNECTING, VIDEO_ENDED };
59 std::tuple<cv::Mat, unsigned int, Status> getNextFrame();
62 class SourceHandlerImpl;
63 std::unique_ptr<SourceHandlerImpl> mSourceHandlerImpl;
68 DS_API cv::Rect padRect(
const cv::Rect & rect,
float padFactor );
69 DS_API cv::Rect clipRect(
const cv::Rect & rect,
const cv::Mat & image );
70 DS_API cv::Rect padClipRect(
const cv::Rect & rect,
float padFactor,
const cv::Mat & image );
78 DS_API void drawPeople (
const std::vector<ds::Person> & people, cv::Mat & image );
79 DS_API void drawPeopleNoLabel(
const std::vector<ds::Person> & people, cv::Mat & image );
80 DS_API void drawPeopleMinimal(
const std::vector<ds::Person> & people, cv::Mat & image );
83 DS_API cv::Mat drawPerson (
const ds::Person & person,
const cv::Mat & image );
84 DS_API cv::Mat drawPersonNoLabel(
const ds::Person & person,
const cv::Mat & image );
85 DS_API cv::Mat drawPersonMinimal(
const ds::Person & person,
const cv::Mat & image );
86 DS_API cv::Mat drawPeople (
const std::vector<ds::Person> & people,
const cv::Mat & image );
87 DS_API cv::Mat drawPeopleNoLabel(
const std::vector<ds::Person> & people,
const cv::Mat & image );
88 DS_API cv::Mat drawPeopleMinimal(
const std::vector<ds::Person> & people,
const cv::Mat & image );
92 DS_API void drawBodies(
const std::vector<ds::Body> & bodies, cv::Mat & image );
95 DS_API cv::Mat drawBody (
const ds::Body & body,
const cv::Mat & image );
96 DS_API cv::Mat drawBodies(
const std::vector<ds::Body> & bodies,
const cv::Mat & image );
100 DS_API void blurPeople(
const std::vector<ds::Person> & people, cv::Mat & image );
101 DS_API void blurBox(
const cv::Rect & box, cv::Mat & image );
102 DS_API void blurBoxes(
const std::vector<cv::Rect> & boxes, cv::Mat & image );
105 DS_API cv::Mat blurPerson(
const ds::Person & person,
const cv::Mat & image );
106 DS_API cv::Mat blurPeople(
const std::vector<ds::Person> & people,
const cv::Mat & image );
107 DS_API cv::Mat blurBox(
const cv::Rect & box,
const cv::Mat & image );
108 DS_API cv::Mat blurBoxes(
const std::vector<cv::Rect> & boxes,
const cv::Mat & image );
111 DS_API std::string personToCsvHeader();
113 DS_API std::vector<std::string> peopleToCsv(
const std::vector<ds::Person> & people );
115 DS_API std::string formatPerson(
const std::string & templateStr,
119 DS_API std::string aggregatedPersonToCsvHeader();
121 DS_API std::vector<std::string> aggregatedPeopleToCsv(
const std::vector<ds::AggregatedPerson> & aggregatedPeople );
123 DS_API std::string formatAggregatedPerson(
const std::string & templateStr,
127 DS_API std::string bodyToCsvHeader();
129 DS_API std::vector<std::string> bodiesToCsv(
const std::vector<ds::Body> & bodies );
131 DS_API std::string formatBody(
const std::string & templateStr,
135 DS_API std::string aggregatedBodyToCsvHeader();
137 DS_API std::vector<std::string> aggregatedBodiesToCsv(
const std::vector<ds::AggregatedBody> & aggregatedBodies );
139 DS_API std::string formatAggregatedBody(
const std::string & templateStr,
142 DS_API std::string getMachineID(
const std::string & licenseKey );
144 DS_API std::string getOpenCLDebugString();