mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #21032 from alalek:js_tracker_mil
This commit is contained in:
commit
12c1e1d149
@ -97,6 +97,10 @@ using namespace cv::dnn;
|
||||
using namespace aruco;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENCV_VIDEO
|
||||
typedef TrackerMIL::Params TrackerMIL_Params;
|
||||
#endif
|
||||
|
||||
namespace binding_utils
|
||||
{
|
||||
template<typename classT, typename enumT>
|
||||
@ -364,6 +368,23 @@ namespace binding_utils
|
||||
result.call<void>("push", arg2);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void Tracker_init_wrapper(cv::Tracker& arg0, const cv::Mat& arg1, const Rect& arg2)
|
||||
{
|
||||
return arg0.init(arg1, arg2);
|
||||
}
|
||||
|
||||
emscripten::val Tracker_update_wrapper(cv::Tracker& arg0, const cv::Mat& arg1)
|
||||
{
|
||||
Rect rect;
|
||||
bool update = arg0.update(arg1, rect);
|
||||
|
||||
emscripten::val result = emscripten::val::array();
|
||||
result.call<void>("push", update);
|
||||
result.call<void>("push", rect);
|
||||
return result;
|
||||
}
|
||||
#endif // HAVE_OPENCV_VIDEO
|
||||
|
||||
std::string getExceptionMsg(const cv::Exception& e) {
|
||||
@ -676,6 +697,11 @@ EMSCRIPTEN_BINDINGS(binding_utils)
|
||||
function("CamShift", select_overload<emscripten::val(const cv::Mat&, Rect&, TermCriteria)>(&binding_utils::CamShiftWrapper));
|
||||
|
||||
function("meanShift", select_overload<emscripten::val(const cv::Mat&, Rect&, TermCriteria)>(&binding_utils::meanShiftWrapper));
|
||||
|
||||
emscripten::class_<cv::Tracker >("Tracker")
|
||||
.function("init", select_overload<void(cv::Tracker&,const cv::Mat&,const Rect&)>(&binding_utils::Tracker_init_wrapper), pure_virtual())
|
||||
.function("update", select_overload<emscripten::val(cv::Tracker&,const cv::Mat&)>(&binding_utils::Tracker_update_wrapper), pure_virtual());
|
||||
|
||||
#endif
|
||||
|
||||
function("getBuildInformation", &binding_utils::getBuildInformation);
|
||||
|
@ -105,3 +105,28 @@ QUnit.test('Background Segmentation', function(assert) {
|
||||
mog2.delete();
|
||||
}
|
||||
});
|
||||
|
||||
QUnit.test('TrackerMIL', function(assert) {
|
||||
{
|
||||
let src1 = cv.Mat.zeros(100, 100, cv.CV_8UC1);
|
||||
let src2 = cv.Mat.zeros(100, 100, cv.CV_8UC1);
|
||||
|
||||
let tracker = new cv.TrackerMIL();
|
||||
|
||||
assert.equal(tracker instanceof cv.TrackerMIL, true);
|
||||
assert.equal(tracker instanceof cv.Tracker, true);
|
||||
|
||||
let rect = new cv.Rect(10, 10, 50, 60);
|
||||
tracker.init(src1, rect);
|
||||
|
||||
let [updated, rect2] = tracker.update(src2);
|
||||
|
||||
assert.equal(updated, true);
|
||||
assert.equal(rect2.width, 50);
|
||||
assert.equal(rect2.height, 60);
|
||||
|
||||
tracker.delete();
|
||||
src1.delete();
|
||||
src2.delete();
|
||||
}
|
||||
});
|
||||
|
@ -113,10 +113,21 @@ objdetect = {'': ['groupRectangles'],
|
||||
'CascadeClassifier': ['load', 'detectMultiScale2', 'CascadeClassifier', 'detectMultiScale3', 'empty', 'detectMultiScale'],
|
||||
'QRCodeDetector': ['QRCodeDetector', 'decode', 'decodeCurved', 'detect', 'detectAndDecode', 'detectMulti', 'setEpsX', 'setEpsY']}
|
||||
|
||||
video = {'': ['CamShift', 'calcOpticalFlowFarneback', 'calcOpticalFlowPyrLK', 'createBackgroundSubtractorMOG2', \
|
||||
'findTransformECC', 'meanShift'],
|
||||
video = {
|
||||
'': [
|
||||
'CamShift',
|
||||
'calcOpticalFlowFarneback',
|
||||
'calcOpticalFlowPyrLK',
|
||||
'createBackgroundSubtractorMOG2',
|
||||
'findTransformECC',
|
||||
'meanShift',
|
||||
],
|
||||
'BackgroundSubtractorMOG2': ['BackgroundSubtractorMOG2', 'apply'],
|
||||
'BackgroundSubtractor': ['apply', 'getBackgroundImage']}
|
||||
'BackgroundSubtractor': ['apply', 'getBackgroundImage'],
|
||||
# issue #21070: 'Tracker': ['init', 'update'],
|
||||
'TrackerMIL': ['create'],
|
||||
'TrackerMIL_Params': [],
|
||||
}
|
||||
|
||||
dnn = {'dnn_Net': ['setInput', 'forward'],
|
||||
'': ['readNetFromCaffe', 'readNetFromTensorflow', 'readNetFromTorch', 'readNetFromDarknet',
|
||||
|
Loading…
Reference in New Issue
Block a user