Commit f8807f18 authored by Maksim Shabunin's avatar Maksim Shabunin

Reduced modules dependencies:

- made some of dependencies explicit
- removed dependencies to highgui and some other modules where possible
- modified some samples to build without modules
parent f1a198d1
set(the_description "Background Segmentation Algorithms")
ocv_define_module(bgsegm opencv_core opencv_imgproc opencv_video opencv_highgui WRAP python)
ocv_define_module(bgsegm opencv_core opencv_imgproc opencv_video WRAP python)
set(the_description "Custom Calibration Pattern")
ocv_define_module(ccalib opencv_core opencv_imgproc opencv_calib3d opencv_features2d WRAP python)
ocv_define_module(ccalib opencv_core opencv_imgproc opencv_calib3d opencv_features2d opencv_highgui WRAP python)
set(the_description "datasets framework")
ocv_define_module(datasets opencv_core opencv_ml opencv_flann opencv_text WRAP python)
ocv_define_module(datasets opencv_core opencv_imgcodecs opencv_ml opencv_flann opencv_text WRAP python)
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4267) # flann, Win64
......@@ -43,7 +43,7 @@
#include <sys/stat.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include "opencv2/imgcodecs.hpp"
using namespace std;
......
......@@ -43,7 +43,7 @@
#include <sys/stat.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include "opencv2/imgcodecs.hpp"
using namespace std;
......
set(the_description "Line descriptor")
ocv_define_module(line_descriptor opencv_features2d opencv_imgproc opencv_highgui WRAP python)
ocv_define_module(line_descriptor opencv_imgproc OPTIONAL opencv_features2d WRAP python)
......@@ -56,10 +56,7 @@
#include <iostream>
#include "opencv2/core/utility.hpp"
//#include "opencv2/core/private.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include "opencv2/core.hpp"
/* define data types */
......
......@@ -53,7 +53,6 @@
#include "opencv2/ts.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/line_descriptor.hpp"
#ifdef GTEST_CREATE_SHARED_LIBRARY
......
......@@ -39,15 +39,16 @@
//
//M*/
#include <opencv2/line_descriptor.hpp>
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace cv::line_descriptor;
......@@ -98,4 +99,12 @@ int main( int argc, char** argv )
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -39,14 +39,16 @@
//
//M*/
#include <opencv2/line_descriptor.hpp>
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <vector>
#include <time.h>
......@@ -194,4 +196,12 @@ int main( int argc, char** argv )
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -39,15 +39,16 @@
//
//M*/
#include <opencv2/line_descriptor.hpp>
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace cv::line_descriptor;
using namespace std;
......@@ -121,3 +122,13 @@ int main( int argc, char** argv )
imshow( "Lines", output );
waitKey();
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -39,15 +39,16 @@
//
//M*/
#include <opencv2/line_descriptor.hpp>
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace cv::line_descriptor;
using namespace std;
......@@ -121,3 +122,13 @@ int main( int argc, char** argv )
imshow( "LSD lines", output );
waitKey();
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -39,15 +39,16 @@
//
//M*/
#include <opencv2/line_descriptor.hpp>
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#define MATCHES_DIST_THRESHOLD 25
using namespace cv;
......@@ -207,3 +208,12 @@ int main( int argc, char** argv )
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -39,6 +39,10 @@
//
//M*/
#include <iostream>
#ifdef HAVE_OPENCV_FEATURES2D
#include <opencv2/line_descriptor.hpp>
#include "opencv2/core/utility.hpp"
......@@ -46,7 +50,6 @@
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <vector>
using namespace cv;
......@@ -140,3 +143,13 @@ int main( int argc, char** argv )
}
}
#else
int main()
{
std::cerr << "OpenCV was built without features2d module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_FEATURES2D
......@@ -54,8 +54,6 @@
#include "opencv2/core/utility.hpp"
#include "opencv2/core/private.hpp"
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/highgui.hpp>
#include "opencv2/core.hpp"
#include <iostream>
......
......@@ -11,7 +11,6 @@
#include "opencv2/ts.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/line_descriptor.hpp"
#include <opencv2/core.hpp>
......
set(the_description "Optical Flow Algorithms")
ocv_define_module(optflow opencv_core opencv_imgproc opencv_video opencv_highgui opencv_ximgproc WRAP python)
ocv_define_module(optflow opencv_core opencv_imgproc opencv_video opencv_ximgproc opencv_imgcodecs WRAP python)
......@@ -41,7 +41,6 @@
//M*/
#include "precomp.hpp"
#include <opencv2/highgui.hpp>
namespace cv
{
......
......@@ -42,7 +42,6 @@
#include "precomp.hpp"
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/video.hpp"
#include "opencv2/optflow.hpp"
......
......@@ -43,7 +43,7 @@
#include "opencv2/core/core_c.h"
#include "opencv2/core/private.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgcodecs.hpp"
#include "precomp.hpp"
#include "opencl_kernels_optflow.hpp"
......
set(the_description "Phase Unwrapping API")
ocv_define_module(phase_unwrapping opencv_core opencv_calib3d opencv_imgproc opencv_highgui opencv_features2d opencv_rgbd WRAP python java)
ocv_define_module(phase_unwrapping opencv_core opencv_imgproc WRAP python java)
......@@ -11,7 +11,6 @@
#include "opencv2/ts.hpp"
#include "opencv2/phase_unwrapping.hpp"
#include <opencv2/rgbd.hpp>
#include <iostream>
#endif
set(the_description "Plot function for Mat data.")
ocv_define_module(plot opencv_core opencv_highgui WRAP python)
ocv_define_module(plot opencv_core opencv_imgproc WRAP python)
set(the_description "RGBD algorithms")
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef)
ocv_define_module(rgbd opencv_core opencv_calib3d opencv_highgui opencv_imgproc WRAP python)
ocv_define_module(rgbd opencv_core opencv_calib3d opencv_imgproc WRAP python)
......@@ -4,6 +4,6 @@ endif()
set(the_description "Saliency API")
ocv_define_module(saliency opencv_imgproc opencv_highgui opencv_features2d WRAP python)
ocv_define_module(saliency opencv_imgproc opencv_features2d WRAP python)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Woverloaded-virtual)
......@@ -42,7 +42,7 @@
#include "../precomp.hpp"
#include "CmShow.hpp"
#include "opencv2/core.hpp"
#include <opencv2/highgui.hpp>
// #include <opencv2/highgui.hpp>
typedef std::pair<int, int> CostiIdx;
......@@ -51,7 +51,7 @@ namespace cv
namespace saliency
{
Mat CmShow::HistBins( CMat& color3f, CMat& val, CStr& title, bool descendShow, CMat &with )
Mat CmShow::HistBins( CMat& color3f, CMat& val, bool descendShow, CMat &with )
{
// Prepare data
int H = 300, spaceH = 6, barH = 10, n = color3f.cols;
......@@ -98,7 +98,6 @@ Mat CmShow::HistBins( CMat& color3f, CMat& val, CStr& title, bool descendShow, C
x += binW[idx];
}
imshow( String( title.c_str() ), showImg3b );
return showImg3b;
}
......
......@@ -51,7 +51,7 @@ namespace saliency
class CmShow
{
public:
static cv::Mat HistBins( CMat& color3f, CMat& val, CStr& title, bool descendShow = false, CMat &with = cv::Mat() );
static cv::Mat HistBins( CMat& color3f, CMat& val, bool descendShow = false, CMat &with = cv::Mat() );
static void showTinyMat( CStr &title, CMat &m );
static inline void SaveShow( CMat& img, CStr& title );
};
......
set(the_description "Stereo Correspondence")
ocv_define_module(stereo opencv_imgproc opencv_features2d opencv_core opencv_highgui opencv_calib3d)
ocv_define_module(stereo opencv_imgproc opencv_features2d opencv_core opencv_calib3d)
......@@ -49,7 +49,6 @@
#include "opencv2/core/utility.hpp"
#include "opencv2/core/private.hpp"
#include "opencv2/core/cvdef.h"
#include "opencv2/highgui.hpp"
#include "opencv2/calib3d.hpp"
#include <algorithm>
......
set(the_description "Structured Light API")
ocv_define_module(structured_light opencv_core opencv_calib3d opencv_imgproc opencv_highgui opencv_features2d opencv_rgbd opencv_phase_unwrapping OPTIONAL opencv_viz WRAP python java)
ocv_define_module(structured_light opencv_core opencv_imgproc opencv_calib3d opencv_phase_unwrapping OPTIONAL opencv_viz WRAP python java)
......@@ -148,4 +148,4 @@ public:
//! @}
}
}
#endif
\ No newline at end of file
#endif
......@@ -40,9 +40,8 @@
//M*/
#include "test_precomp.hpp"
#include <opencv2/rgbd.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/calib3d.hpp>
#include <opencv2/imgproc.hpp>
......
......@@ -11,7 +11,6 @@
#include "opencv2/ts.hpp"
#include "opencv2/structured_light.hpp"
#include <opencv2/rgbd.hpp>
#include <iostream>
#endif
\ No newline at end of file
#endif
set(the_description "Tracking API")
ocv_define_module(tracking opencv_imgproc opencv_core opencv_video opencv_highgui opencv_plot OPTIONAL opencv_dnn opencv_datasets WRAP java python)
ocv_define_module(tracking opencv_imgproc opencv_core opencv_video opencv_plot OPTIONAL opencv_dnn opencv_datasets WRAP java python)
......@@ -42,15 +42,15 @@
#ifndef OPENCV_TLD_DATASET
#define OPENCV_TLD_DATASET
#include "opencv2/highgui.hpp"
#include "opencv2/core.hpp"
namespace cv
{
namespace tld
{
CV_EXPORTS cv::Rect2d tld_InitDataset(int videoInd, const char* rootPath = "TLD_dataset", int datasetInd = 0);
CV_EXPORTS cv::Mat tld_getNextDatasetFrame();
CV_EXPORTS cv::String tld_getNextDatasetFrame();
}
}
#endif
\ No newline at end of file
#endif
......@@ -1370,42 +1370,6 @@ protected:
String defaultAlgorithm;
};
class ROISelector {
public:
Rect2d select(Mat img, bool fromCenter = true);
Rect2d select(const cv::String& windowName, Mat img, bool showCrossair = true, bool fromCenter = true);
void select(const cv::String& windowName, Mat img, std::vector<Rect2d> & boundingBox, bool fromCenter = true);
struct handlerT{
// basic parameters
bool isDrawing;
Rect2d box;
Mat image;
// parameters for drawing from the center
bool drawFromCenter;
Point2f center;
// initializer list
handlerT() : isDrawing(false), drawFromCenter(true) {};
}selectorParams;
// to store the tracked objects
std::vector<handlerT> objects;
private:
static void mouseHandler(int event, int x, int y, int flags, void *param);
void opencv_mouse_callback(int event, int x, int y, int, void *param);
// save the keypressed characted
int key;
};
Rect2d CV_EXPORTS_W selectROI(Mat img, bool fromCenter = true);
Rect2d CV_EXPORTS_W selectROI(const cv::String& windowName, Mat img, bool showCrossair = true, bool fromCenter = true);
void CV_EXPORTS_W selectROI(const cv::String& windowName, Mat img, std::vector<Rect2d> & boundingBox, bool fromCenter = true);
/************************************ Multi-Tracker Classes ---By Tyan Vladimir---************************************/
/** @brief Base abstract class for the long-term Multi Object Trackers:
......
......@@ -24,6 +24,7 @@
#include <iostream>
#include <cstring>
#include <ctime>
#include "roiSelector.hpp"
#ifdef HAVE_OPENCV
#include <opencv2/flann.hpp>
......
#ifndef _ROISELECTOR_HPP_
#define _ROISELECTOR_HPP_
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
cv::Rect2d selectROI(cv::Mat img, bool fromCenter = true);
cv::Rect2d selectROI(const cv::String& windowName, cv::Mat img, bool showCrossair = true, bool fromCenter = true);
void selectROI(const cv::String& windowName, cv::Mat img, std::vector<cv::Rect2d> & boundingBox, bool fromCenter = true);
//==================================================================================================
class ROISelector
{
public:
cv::Rect2d select(cv::Mat img, bool fromCenter = true)
{
return select("ROI selector", img, fromCenter);
}
cv::Rect2d select(const cv::String &windowName, cv::Mat img, bool showCrossair = true, bool fromCenter = true)
{
key = 0;
// set the drawing mode
selectorParams.drawFromCenter = fromCenter;
// show the image and give feedback to user
cv::imshow(windowName, img);
// copy the data, rectangle should be drawn in the fresh image
selectorParams.image = img.clone();
// select the object
cv::setMouseCallback(windowName, mouseHandler, (void *)&selectorParams);
// end selection process on SPACE (32) ESC (27) or ENTER (13)
while (!(key == 32 || key == 27 || key == 13))
{
// draw the selected object
cv::rectangle(selectorParams.image, selectorParams.box, cv::Scalar(255, 0, 0), 2, 1);
// draw cross air in the middle of bounding box
if (showCrossair)
{
// horizontal line
cv::line(selectorParams.image,
cv::Point((int)selectorParams.box.x,
(int)(selectorParams.box.y + selectorParams.box.height / 2)),
cv::Point((int)(selectorParams.box.x + selectorParams.box.width),
(int)(selectorParams.box.y + selectorParams.box.height / 2)),
cv::Scalar(255, 0, 0), 2, 1);
// vertical line
cv::line(selectorParams.image,
cv::Point((int)(selectorParams.box.x + selectorParams.box.width / 2),
(int)selectorParams.box.y),
cv::Point((int)(selectorParams.box.x + selectorParams.box.width / 2),
(int)(selectorParams.box.y + selectorParams.box.height)),
cv::Scalar(255, 0, 0), 2, 1);
}
// show the image bouding box
cv::imshow(windowName, selectorParams.image);
// reset the image
selectorParams.image = img.clone();
// get keyboard event, extract lower 8 bits for scancode comparison
key = cv::waitKey(1) & 0xFF;
}
return selectorParams.box;
}
void select(const cv::String &windowName, cv::Mat img, std::vector<cv::Rect2d> &boundingBox, bool fromCenter = true)
{
std::vector<cv::Rect2d> box;
cv::Rect2d temp;
key = 0;
// show notice to user
printf("Select an object to track and then press SPACE or ENTER button!\n");
printf("Finish the selection process by pressing ESC button!\n");
// while key is not ESC (27)
for (;;)
{
temp = select(windowName, img, true, fromCenter);
if (key == 27)
break;
if (temp.width > 0 && temp.height > 0)
box.push_back(temp);
}
boundingBox = box;
}
struct handlerT
{
// basic parameters
bool isDrawing;
cv::Rect2d box;
cv::Mat image;
// parameters for drawing from the center
bool drawFromCenter;
cv::Point2f center;
// initializer list
handlerT() : isDrawing(false), drawFromCenter(true){};
} selectorParams;
// to store the tracked objects
std::vector<handlerT> objects;
private:
static void mouseHandler(int event, int x, int y, int flags, void *param)
{
ROISelector *self = static_cast<ROISelector *>(param);
self->opencv_mouse_callback(event, x, y, flags, param);
}
void opencv_mouse_callback(int event, int x, int y, int, void *param)
{
handlerT *data = (handlerT *)param;
switch (event)
{
// update the selected bounding box
case cv::EVENT_MOUSEMOVE:
if (data->isDrawing)
{
if (data->drawFromCenter)
{
data->box.width = 2 * (x - data->center.x) /*data->box.x*/;
data->box.height = 2 * (y - data->center.y) /*data->box.y*/;
data->box.x = data->center.x - data->box.width / 2.0;
data->box.y = data->center.y - data->box.height / 2.0;
}
else
{
data->box.width = x - data->box.x;
data->box.height = y - data->box.y;
}
}
break;
// start to select the bounding box
case cv::EVENT_LBUTTONDOWN:
data->isDrawing = true;
data->box = cv::Rect2d(x, y, 0, 0);
data->center = cv::Point2f((float)x, (float)y);
break;
// cleaning up the selected bounding box
case cv::EVENT_LBUTTONUP:
data->isDrawing = false;
if (data->box.width < 0)
{
data->box.x += data->box.width;
data->box.width *= -1;
}
if (data->box.height < 0)
{
data->box.y += data->box.height;
data->box.height *= -1;
}
break;
}
}
// save the keypressed characted
int key;
};
//==================================================================================================
static ROISelector _selector;
cv::Rect2d selectROI(cv::Mat img, bool fromCenter)
{
return _selector.select("ROI selector", img, true, fromCenter);
};
cv::Rect2d selectROI(const cv::String &windowName, cv::Mat img, bool showCrossair, bool fromCenter)
{
printf("Select an object to track and then press SPACE or ENTER button!\n");
return _selector.select(windowName, img, showCrossair, fromCenter);
};
void selectROI(const cv::String &windowName, cv::Mat img, std::vector<cv::Rect2d> &boundingBox, bool fromCenter)
{
return _selector.select(windowName, img, boundingBox, fromCenter);
}
#endif // _ROISELECTOR_HPP_
......@@ -4,6 +4,7 @@
#include <opencv2/highgui.hpp>
#include <iostream>
#include <cstring>
#include "roiSelector.hpp"
using namespace std;
using namespace cv;
......
......@@ -4,6 +4,7 @@
#include <opencv2/highgui.hpp>
#include <iostream>
#include <cstring>
#include "roiSelector.hpp"
using namespace std;
using namespace cv;
......
......@@ -14,6 +14,7 @@
#include <iostream>
#include <cstring>
#include <ctime>
#include "roiSelector.hpp"
using namespace std;
using namespace cv;
......
......@@ -3,7 +3,6 @@
#include "precomp.hpp"
#include <vector>
#include "opencv2/highgui.hpp"
namespace cv
{
......
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "precomp.hpp"
namespace cv {
void ROISelector::mouseHandler(int event, int x, int y, int flags, void *param){
ROISelector *self =static_cast<ROISelector*>(param);
self->opencv_mouse_callback(event,x,y,flags,param);
}
void ROISelector::opencv_mouse_callback( int event, int x, int y, int , void *param ){
handlerT * data = (handlerT*)param;
switch( event ){
// update the selected bounding box
case EVENT_MOUSEMOVE:
if( data->isDrawing ){
if(data->drawFromCenter){
data->box.width = 2*(x-data->center.x)/*data->box.x*/;
data->box.height = 2*(y-data->center.y)/*data->box.y*/;
data->box.x = data->center.x-data->box.width/2.0;
data->box.y = data->center.y-data->box.height/2.0;
}else{
data->box.width = x-data->box.x;
data->box.height = y-data->box.y;
}
}
break;
// start to select the bounding box
case EVENT_LBUTTONDOWN:
data->isDrawing = true;
data->box = cvRect( x, y, 0, 0 );
data->center = Point2f((float)x,(float)y);
break;
// cleaning up the selected bounding box
case EVENT_LBUTTONUP:
data->isDrawing = false;
if( data->box.width < 0 ){
data->box.x += data->box.width;
data->box.width *= -1;
}
if( data->box.height < 0 ){
data->box.y += data->box.height;
data->box.height *= -1;
}
break;
}
}
Rect2d ROISelector::select(Mat img, bool fromCenter){
return select("ROI selector", img, fromCenter);
}
Rect2d ROISelector::select(const cv::String& windowName, Mat img, bool showCrossair, bool fromCenter){
key=0;
// set the drawing mode
selectorParams.drawFromCenter = fromCenter;
// show the image and give feedback to user
imshow(windowName,img);
// copy the data, rectangle should be drawn in the fresh image
selectorParams.image=img.clone();
// select the object
setMouseCallback( windowName, mouseHandler, (void *)&selectorParams );
// end selection process on SPACE (32) ESC (27) or ENTER (13)
while(!(key==32 || key==27 || key==13)){
// draw the selected object
rectangle(
selectorParams.image,
selectorParams.box,
Scalar(255,0,0),2,1
);
// draw cross air in the middle of bounding box
if(showCrossair){
// horizontal line
line(
selectorParams.image,
Point((int)selectorParams.box.x,(int)(selectorParams.box.y+selectorParams.box.height/2)),
Point((int)(selectorParams.box.x+selectorParams.box.width),(int)(selectorParams.box.y+selectorParams.box.height/2)),
Scalar(255,0,0),2,1
);
// vertical line
line(
selectorParams.image,
Point((int)(selectorParams.box.x+selectorParams.box.width/2),(int)selectorParams.box.y),
Point((int)(selectorParams.box.x+selectorParams.box.width/2),(int)(selectorParams.box.y+selectorParams.box.height)),
Scalar(255,0,0),2,1
);
}
// show the image bouding box
imshow(windowName,selectorParams.image);
// reset the image
selectorParams.image=img.clone();
//get keyboard event, extract lower 8 bits for scancode comparison
key=waitKey(1) & 0xFF;
}
return selectorParams.box;
}
void ROISelector::select(const cv::String& windowName, Mat img, std::vector<Rect2d> & boundingBox, bool fromCenter){
std::vector<Rect2d> box;
Rect2d temp;
key=0;
// show notice to user
printf("Select an object to track and then press SPACE or ENTER button!\n" );
printf("Finish the selection process by pressing ESC button!\n" );
// while key is not ESC (27)
for(;;) {
temp=select(windowName, img, true, fromCenter);
if(key==27) break;
if(temp.width>0 && temp.height>0)
box.push_back(temp);
}
boundingBox=box;
}
ROISelector _selector;
Rect2d selectROI(Mat img, bool fromCenter){
return _selector.select("ROI selector", img, true, fromCenter);
};
Rect2d selectROI(const cv::String& windowName, Mat img, bool showCrossair, bool fromCenter){
printf("Select an object to track and then press SPACE or ENTER button!\n" );
return _selector.select(windowName,img, showCrossair, fromCenter);
};
void selectROI(const cv::String& windowName, Mat img, std::vector<Rect2d> & boundingBox, bool fromCenter){
return _selector.select(windowName, img, boundingBox, fromCenter);
}
} /* namespace cv */
......@@ -159,7 +159,7 @@ namespace cv
return cv::Rect2d(x, y, w, h);
}
cv::Mat tld_getNextDatasetFrame()
cv::String tld_getNextDatasetFrame()
{
char fullPath[100];
char numStr[10];
......@@ -178,8 +178,8 @@ namespace cv
else strcat(fullPath, ".jpg");
frameNum++;
return cv::imread(fullPath);
return fullPath;
}
}
}
\ No newline at end of file
}
......@@ -49,34 +49,6 @@ namespace tld
//Debug functions and variables
Rect2d etalon(14.0, 110.0, 20.0, 20.0);
void drawWithRects(const Mat& img, std::vector<Rect2d>& blackOnes, Rect2d whiteOne)
{
Mat image;
img.copyTo(image);
if( whiteOne.width >= 0 )
rectangle( image, whiteOne, 255, 1, 1 );
for( int i = 0; i < (int)blackOnes.size(); i++ )
rectangle( image, blackOnes[i], 0, 1, 1 );
imshow("img", image);
}
void drawWithRects(const Mat& img, std::vector<Rect2d>& blackOnes, std::vector<Rect2d>& whiteOnes, String filename)
{
Mat image;
static int frameCounter = 1;
img.copyTo(image);
for( int i = 0; i < (int)whiteOnes.size(); i++ )
rectangle( image, whiteOnes[i], 255, 1, 1 );
for( int i = 0; i < (int)blackOnes.size(); i++ )
rectangle( image, blackOnes[i], 0, 1, 1 );
imshow("img", image);
if( filename.length() > 0 )
{
char inbuf[100];
sprintf(inbuf, "%s%d.jpg", filename.c_str(), frameCounter);
imwrite(inbuf, image);
frameCounter++;
}
}
void myassert(const Mat& img)
{
int count = 0;
......
......@@ -2,7 +2,6 @@
#define OPENCV_TLD_UTILS
#include "precomp.hpp"
#include "opencv2/highgui.hpp"
namespace cv
{
......@@ -35,8 +34,6 @@ namespace cv
void myassert(const Mat& img);
void printPatch(const Mat_<uchar>& standardPatch);
std::string type2str(const Mat& mat);
void drawWithRects(const Mat& img, std::vector<Rect2d>& blackOnes, Rect2d whiteOne = Rect2d(-1.0, -1.0, -1.0, -1.0));
void drawWithRects(const Mat& img, std::vector<Rect2d>& blackOnes, std::vector<Rect2d>& whiteOnes, String fileName = "");
//aux functions and variables
template<typename T> inline T CLIP(T x, T a, T b){ return std::min(std::max(x, a), b); }
......@@ -59,4 +56,4 @@ namespace cv
}
}
#endif
\ No newline at end of file
#endif
......@@ -59,7 +59,6 @@ Explanation
Using this function, you can select the bounding box of the tracked object using a GUI.
With default parameters, the selection is started from the center of the box and a middle cross will be shown.
See @ref cv::selectROI for more detailed information.
-# **Initializing the tracker object**
......
......@@ -28,9 +28,8 @@ Explanation
@snippet tracking/samples/tutorial_multitracker.cpp selectmulti
You can use @ref cv::selectROI to select multiple objects with
You can use selectROI to select multiple objects with
the result stored in a vector of @ref cv::Rect2d as shown in the code.
You can also use another kind of selection scheme, please refer to @ref cv::selectROI for detailed information.
-# **Adding the tracked object to MultiTracker**
......
set(the_description "Contributed/Experimental Algorithms for Salient 2D Features Detection")
ocv_define_module(xfeatures2d opencv_core opencv_imgproc opencv_features2d opencv_calib3d opencv_shape opencv_highgui opencv_videoio opencv_ml
OPTIONAL opencv_cudaarithm WRAP python java)
ocv_define_module(xfeatures2d opencv_core opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_shape opencv_cudaarithm WRAP python java)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_vgg.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_boostdesc.cmake)
#include <iostream>
#ifdef HAVE_OPENCV_ML
#include "opencv2/opencv_modules.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
......@@ -7,7 +11,6 @@
#include "opencv2/ml.hpp"
#include <fstream>
#include <iostream>
#include <memory>
#include <functional>
......@@ -2624,3 +2627,13 @@ int main(int argc, char** argv)
}
return 0;
}
#else
int main()
{
std::cerr << "OpenCV was built without ml module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_ML
/*
* shape_context.cpp -- Shape context demo for shape matching
*/
#include <iostream>
#ifdef HAVE_OPENCV_SHAPE
#include "opencv2/shape.hpp"
#include "opencv2/imgcodecs.hpp"
......@@ -9,7 +12,6 @@
#include "opencv2/features2d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include <opencv2/core/utility.hpp>
#include <iostream>
#include <string>
using namespace std;
......@@ -74,3 +76,13 @@ int main(int argc, char** argv)
return 0;
}
#else
int main()
{
std::cerr << "OpenCV was built without shape module" << std::endl;
return 0;
}
#endif // HAVE_OPENCV_SHAPE
......@@ -5,13 +5,16 @@
* Author: erublee
*/
#include <iostream>
#ifdef HAVE_OPENCV_CALIB3D
#include "opencv2/calib3d.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include <iostream>
#include <list>
#include <vector>
......@@ -232,3 +235,13 @@ int main(int ac, char ** av)
}
return 0;
}
#else
int main()
{
std::cerr << "OpenCV was built without calib3d module" << std::endl;
return 0;
}
#endif
set(the_description "Extended image processing module. It includes edge-aware filters and etc.")
ocv_define_module(ximgproc opencv_imgproc opencv_core opencv_highgui opencv_calib3d WRAP python)
ocv_define_module(ximgproc opencv_core opencv_imgproc opencv_calib3d opencv_imgcodecs WRAP python)
......@@ -34,7 +34,6 @@
* the use of this software, even if advised of the possibility of such damage.
*/
#include "precomp.hpp"
#include "opencv2/highgui.hpp"
#include <math.h>
#include <vector>
#include <iostream>
......
......@@ -2,26 +2,26 @@
* By downloading, copying, installing or using the software you agree to this license.
* If you do not agree to this license, do not download, install,
* copy or use the software.
*
*
*
*
* License Agreement
* For Open Source Computer Vision Library
* (3 - clause BSD License)
*
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met :
*
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and / or other materials provided with the distribution.
*
*
* * Neither the names of the copyright holders nor the names of the contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
*
* This software is provided by the copyright holders and contributors "as is" and
* any express or implied warranties, including, but not limited to, the implied
* warranties of merchantability and fitness for a particular purpose are disclaimed.
......@@ -36,7 +36,7 @@
#include "precomp.hpp"
#include "opencv2/ximgproc/disparity_filter.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgcodecs.hpp"
#include <math.h>
#include <vector>
......
......@@ -34,7 +34,6 @@
* the use of this software, even if advised of the possibility of such damage.
*/
#include "precomp.hpp"
#include "opencv2/highgui.hpp"
#include <math.h>
#include <vector>
#include <iostream>
......
......@@ -36,7 +36,6 @@
#include "precomp.hpp"
#include <opencv2/ximgproc.hpp>
#include <opencv2/highgui.hpp>
namespace cv
{
......
......@@ -39,7 +39,6 @@ the use of this software, even if advised of the possibility of such damage.
********************************************************************************/
#include "precomp.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/ximgproc/segmentation.hpp"
#include <iostream>
......
set(the_description "Object detection algorithms")
ocv_define_module(xobjdetect opencv_core opencv_imgproc opencv_highgui opencv_objdetect WRAP python)
ocv_define_module(xobjdetect opencv_core opencv_imgproc opencv_objdetect opencv_imgcodecs WRAP python)
if (BUILD_opencv_apps AND NOT APPLE_FRAMEWORK)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools ${CMAKE_CURRENT_BINARY_DIR}/tools)
endif()
......@@ -43,7 +43,6 @@ the use of this software, even if advised of the possibility of such damage.
#define __OPENCV_XOBJDETECT_XOBJDETECT_HPP__
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <vector>
#include <string>
......
......@@ -53,7 +53,6 @@ the use of this software, even if advised of the possibility of such damage.
#include <opencv2/imgproc/types_c.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgcodecs/imgcodecs_c.h>
......
......@@ -43,7 +43,6 @@ the use of this software, even if advised of the possibility of such damage.
#define __OPENCV_XOBJDETECT_DETECTOR_HPP__
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <vector>
#include <string>
#include "precomp.hpp"
......
#include <opencv2/xobjdetect.hpp>
#include <opencv2/imgcodecs/imgcodecs_c.h>
#include <opencv2/imgproc.hpp>
#include "opencv2/xobjdetect.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgcodecs/imgcodecs_c.h"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <cstdio>
using namespace std;
......
set(the_description "Addon to basic photo module")
ocv_define_module(xphoto opencv_core opencv_imgproc OPTIONAL opencv_photo opencv_highgui opencv_photo WRAP python)
ocv_define_module(xphoto opencv_core opencv_imgproc WRAP python)
......@@ -13,7 +13,6 @@
#include "opencv2/imgproc.hpp"
#include "opencv2/imgproc/types_c.h"
#include "opencv2/highgui.hpp"
#include "opencv2/photo.hpp"
#include "opencv2/xphoto.hpp"
#include "opencv2/ts.hpp"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment