version:2.1.5

bugfixes:
update:拨号使用ocr进行识别
This commit is contained in:
2025-05-22 14:30:12 +08:00
parent a86592005f
commit d7e830985f
226 changed files with 66016 additions and 81139 deletions

View File

@@ -48,125 +48,122 @@
#include <vector>
namespace cv {
namespace cv
{
//! @addtogroup objdetect
//! @{
class CV_EXPORTS DetectionBasedTracker {
class CV_EXPORTS DetectionBasedTracker
{
public:
struct CV_EXPORTS Parameters {
struct CV_EXPORTS Parameters
{
int maxTrackLifetime;
int minDetectionPeriod; //the minimal time between run of the big object detector (on the whole frame) in ms (1000 mean 1 sec), default=0
Parameters();
};
class IDetector {
public:
IDetector() :
class IDetector
{
public:
IDetector():
minObjSize(96, 96),
maxObjSize(INT_MAX, INT_MAX),
minNeighbours(2),
scaleFactor(1.1f) {}
scaleFactor(1.1f)
{}
virtual void detect(const cv::Mat &image, std::vector<cv::Rect> &objects) = 0;
virtual void detect(const cv::Mat& image, std::vector<cv::Rect>& objects) = 0;
void setMinObjectSize(const cv::Size &min) {
minObjSize = min;
}
void setMinObjectSize(const cv::Size& min)
{
minObjSize = min;
}
void setMaxObjectSize(const cv::Size& max)
{
maxObjSize = max;
}
cv::Size getMinObjectSize() const
{
return minObjSize;
}
cv::Size getMaxObjectSize() const
{
return maxObjSize;
}
float getScaleFactor()
{
return scaleFactor;
}
void setScaleFactor(float value)
{
scaleFactor = value;
}
int getMinNeighbours()
{
return minNeighbours;
}
void setMinNeighbours(int value)
{
minNeighbours = value;
}
virtual ~IDetector() {}
void setMaxObjectSize(const cv::Size &max) {
maxObjSize = max;
}
cv::Size getMinObjectSize() const {
return minObjSize;
}
cv::Size getMaxObjectSize() const {
return maxObjSize;
}
float getScaleFactor() {
return scaleFactor;
}
void setScaleFactor(float value) {
scaleFactor = value;
}
int getMinNeighbours() {
return minNeighbours;
}
void setMinNeighbours(int value) {
minNeighbours = value;
}
virtual ~IDetector() {}
protected:
cv::Size minObjSize;
cv::Size maxObjSize;
int minNeighbours;
float scaleFactor;
protected:
cv::Size minObjSize;
cv::Size maxObjSize;
int minNeighbours;
float scaleFactor;
};
DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector,
const Parameters &params);
DetectionBasedTracker(cv::Ptr<IDetector> mainDetector, cv::Ptr<IDetector> trackingDetector, const Parameters& params);
virtual ~DetectionBasedTracker();
virtual bool run();
virtual void stop();
virtual void resetTracking();
virtual void process(const cv::Mat &imageGray);
virtual void process(const cv::Mat& imageGray);
bool setParameters(const Parameters &params);
const Parameters &getParameters() const;
bool setParameters(const Parameters& params);
const Parameters& getParameters() const;
typedef std::pair<cv::Rect, int> Object;
virtual void getObjects(std::vector<cv::Rect>& result) const;
virtual void getObjects(std::vector<Object>& result) const;
virtual void getObjects(std::vector<cv::Rect> &result) const;
virtual void getObjects(std::vector<Object> &result) const;
enum ObjectStatus {
enum ObjectStatus
{
DETECTED_NOT_SHOWN_YET,
DETECTED,
DETECTED_TEMPORARY_LOST,
WRONG_OBJECT
};
struct ExtObject {
struct ExtObject
{
int id;
cv::Rect location;
ObjectStatus status;
ExtObject(int _id, cv::Rect _location, ObjectStatus _status)
: id(_id), location(_location), status(_status) {
:id(_id), location(_location), status(_status)
{
}
};
virtual void getObjects(std::vector<ExtObject> &result) const;
virtual void getObjects(std::vector<ExtObject>& result) const;
virtual int addObject(const cv::Rect &location); //returns id of the new object
virtual int addObject(const cv::Rect& location); //returns id of the new object
protected:
class SeparateDetectionWork;
cv::Ptr<SeparateDetectionWork> separateDetectionWork;
friend void* workcycleObjectDetectorFunction(void* p);
friend void *workcycleObjectDetectorFunction(void *p);
struct InnerParameters {
struct InnerParameters
{
int numLastPositionsToTrack;
int numStepsToWaitBeforeFirstShow;
int numStepsToTrackWithoutDetectingIfObjectHasNotBeenShown;
@@ -178,11 +175,11 @@ namespace cv {
InnerParameters();
};
Parameters parameters;
InnerParameters innerParameters;
struct TrackedObject {
struct TrackedObject
{
typedef std::vector<cv::Rect> PositionsVector;
PositionsVector lastPositions;
@@ -191,13 +188,15 @@ namespace cv {
int numFramesNotDetected;
int id;
TrackedObject(const cv::Rect &rect) : numDetectedFrames(1), numFramesNotDetected(0) {
TrackedObject(const cv::Rect& rect):numDetectedFrames(1), numFramesNotDetected(0)
{
lastPositions.push_back(rect);
id = getNextId();
id=getNextId();
};
static int getNextId() {
static int _id = 0;
static int getNextId()
{
static int _id=0;
return _id++;
}
};
@@ -210,15 +209,11 @@ namespace cv {
cv::Ptr<IDetector> cascadeForTracking;
void updateTrackedObjects(const std::vector<cv::Rect> &detectedObjects);
void updateTrackedObjects(const std::vector<cv::Rect>& detectedObjects);
cv::Rect calcTrackedObjectPositionToShow(int i) const;
cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus &status) const;
void detectInRegion(const cv::Mat &img, const cv::Rect &r,
std::vector<cv::Rect> &detectedObjectsInRegions);
};
cv::Rect calcTrackedObjectPositionToShow(int i, ObjectStatus& status) const;
void detectInRegion(const cv::Mat& img, const cv::Rect& r, std::vector<cv::Rect>& detectedObjectsInRegions);
};
//! @} objdetect