提交 c95a9738 编写于 作者: A Alexander Alekhin

Merge pull request #9235 from sturkmen72:patch-3

...@@ -273,6 +273,9 @@ of p and len. ...@@ -273,6 +273,9 @@ of p and len.
*/ */
CV_EXPORTS_W int borderInterpolate(int p, int len, int borderType); CV_EXPORTS_W int borderInterpolate(int p, int len, int borderType);
/** @example copyMakeBorder_demo.cpp
An example using copyMakeBorder function
*/
/** @brief Forms a border around an image. /** @brief Forms a border around an image.
The function copies the source image into the middle of the destination image. The areas to the The function copies the source image into the middle of the destination image. The areas to the
...@@ -471,6 +474,9 @@ The function can also be emulated with a matrix expression, for example: ...@@ -471,6 +474,9 @@ The function can also be emulated with a matrix expression, for example:
*/ */
CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst); CV_EXPORTS_W void scaleAdd(InputArray src1, double alpha, InputArray src2, OutputArray dst);
/** @example AddingImagesTrackbar.cpp
*/
/** @brief Calculates the weighted sum of two arrays. /** @brief Calculates the weighted sum of two arrays.
The function addWeighted calculates the weighted sum of two arrays as follows: The function addWeighted calculates the weighted sum of two arrays as follows:
......
...@@ -2795,6 +2795,9 @@ CV_EXPORTS_W void adaptiveThreshold( InputArray src, OutputArray dst, ...@@ -2795,6 +2795,9 @@ CV_EXPORTS_W void adaptiveThreshold( InputArray src, OutputArray dst,
//! @addtogroup imgproc_filter //! @addtogroup imgproc_filter
//! @{ //! @{
/** @example Pyramids.cpp
An example using pyrDown and pyrUp functions
*/
/** @brief Blurs an image and downsamples it. /** @brief Blurs an image and downsamples it.
By default, size of the output image is computed as `Size((src.cols+1)/2, (src.rows+1)/2)`, but in By default, size of the output image is computed as `Size((src.cols+1)/2, (src.rows+1)/2)`, but in
...@@ -3669,6 +3672,9 @@ enum TemplateMatchModes { ...@@ -3669,6 +3672,9 @@ enum TemplateMatchModes {
TM_CCOEFF_NORMED = 5 //!< \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f] TM_CCOEFF_NORMED = 5 //!< \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f]
}; };
/** @example MatchTemplate_Demo.cpp
An example using Template Matching algorithm
*/
/** @brief Compares a template against overlapped image regions. /** @brief Compares a template against overlapped image regions.
The function slides through image , compares the overlapped patches of size \f$w \times h\f$ against The function slides through image , compares the overlapped patches of size \f$w \times h\f$ against
...@@ -4134,6 +4140,9 @@ enum ColormapTypes ...@@ -4134,6 +4140,9 @@ enum ColormapTypes
COLORMAP_PARULA = 12 //!< ![parula](pics/colormaps/colorscale_parula.jpg) COLORMAP_PARULA = 12 //!< ![parula](pics/colormaps/colorscale_parula.jpg)
}; };
/** @example falsecolor.cpp
An example using applyColorMap function
*/
/** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image. /** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image.
@param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. @param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3.
...@@ -4216,6 +4225,9 @@ CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec, ...@@ -4216,6 +4225,9 @@ CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec,
const Scalar& color, int thickness = 1, const Scalar& color, int thickness = 1,
int lineType = LINE_8, int shift = 0); int lineType = LINE_8, int shift = 0);
/** @example Drawing_2.cpp
An example using drawing functions
*/
/** @brief Draws a circle. /** @brief Draws a circle.
The function circle draws a simple or filled circle with a given center and radius. The function circle draws a simple or filled circle with a given center and radius.
...@@ -4339,6 +4351,9 @@ CV_EXPORTS void fillPoly(Mat& img, const Point** pts, ...@@ -4339,6 +4351,9 @@ CV_EXPORTS void fillPoly(Mat& img, const Point** pts,
const Scalar& color, int lineType = LINE_8, int shift = 0, const Scalar& color, int lineType = LINE_8, int shift = 0,
Point offset = Point() ); Point offset = Point() );
/** @example Drawing_1.cpp
An example using drawing functions
*/
/** @brief Fills the area bounded by one or more polygons. /** @brief Fills the area bounded by one or more polygons.
The function fillPoly fills an area bounded by several polygonal contours. The function can fill The function fillPoly fills an area bounded by several polygonal contours. The function can fill
......
...@@ -215,6 +215,8 @@ public: ...@@ -215,6 +215,8 @@ public:
virtual Ptr<MaskGenerator> getMaskGenerator() = 0; virtual Ptr<MaskGenerator> getMaskGenerator() = 0;
}; };
/** @example facedetect.cpp
*/
/** @brief Cascade classifier class for object detection. /** @brief Cascade classifier class for object detection.
*/ */
class CV_EXPORTS_W CascadeClassifier class CV_EXPORTS_W CascadeClassifier
...@@ -348,6 +350,8 @@ struct DetectionROI ...@@ -348,6 +350,8 @@ struct DetectionROI
std::vector<double> confidences; std::vector<double> confidences;
}; };
/**@example peopledetect.cpp
*/
struct CV_EXPORTS_W HOGDescriptor struct CV_EXPORTS_W HOGDescriptor
{ {
public: public:
......
...@@ -730,6 +730,9 @@ CV_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray co ...@@ -730,6 +730,9 @@ CV_EXPORTS_W void decolor( InputArray src, OutputArray grayscale, OutputArray co
//! @addtogroup photo_clone //! @addtogroup photo_clone
//! @{ //! @{
/** @example cloning_demo.cpp
An example using seamlessClone function
*/
/** @brief Image editing tasks concern either global changes (color/intensity corrections, filters, /** @brief Image editing tasks concern either global changes (color/intensity corrections, filters,
deformations) or local changes concerned to a selection. Here we are interested in achieving local deformations) or local changes concerned to a selection. Here we are interested in achieving local
changes, ones that are restricted to a region manually selected (ROI), in a seamless and effortless changes, ones that are restricted to a region manually selected (ROI), in a seamless and effortless
...@@ -833,6 +836,9 @@ CV_EXPORTS_W void edgePreservingFilter(InputArray src, OutputArray dst, int flag ...@@ -833,6 +836,9 @@ CV_EXPORTS_W void edgePreservingFilter(InputArray src, OutputArray dst, int flag
CV_EXPORTS_W void detailEnhance(InputArray src, OutputArray dst, float sigma_s = 10, CV_EXPORTS_W void detailEnhance(InputArray src, OutputArray dst, float sigma_s = 10,
float sigma_r = 0.15f); float sigma_r = 0.15f);
/** @example npr_demo.cpp
An example using non-photorealistic line drawing functions
*/
/** @brief Pencil-like non-photorealistic line drawing /** @brief Pencil-like non-photorealistic line drawing
@param src Input 8-bit 3-channel image. @param src Input 8-bit 3-channel image.
......
...@@ -53,6 +53,9 @@ namespace cv ...@@ -53,6 +53,9 @@ namespace cv
//! @addtogroup shape //! @addtogroup shape
//! @{ //! @{
/** @example shape_example.cpp
An example using shape distance algorithm
*/
/** @brief Abstract base class for shape distance algorithms. /** @brief Abstract base class for shape distance algorithms.
*/ */
class CV_EXPORTS_W ShapeDistanceExtractor : public Algorithm class CV_EXPORTS_W ShapeDistanceExtractor : public Algorithm
......
...@@ -78,7 +78,9 @@ See the OpenCV sample camshiftdemo.c that tracks colored objects. ...@@ -78,7 +78,9 @@ See the OpenCV sample camshiftdemo.c that tracks colored objects.
*/ */
CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window, CV_EXPORTS_W RotatedRect CamShift( InputArray probImage, CV_IN_OUT Rect& window,
TermCriteria criteria ); TermCriteria criteria );
/** @example camshiftdemo.cpp
An example using the mean-shift tracking algorithm
*/
/** @brief Finds an object on a back projection image. /** @brief Finds an object on a back projection image.
@param probImage Back projection of the object histogram. See calcBackProject for details. @param probImage Back projection of the object histogram. See calcBackProject for details.
...@@ -97,8 +99,6 @@ projection and remove the noise. For example, you can do this by retrieving conn ...@@ -97,8 +99,6 @@ projection and remove the noise. For example, you can do this by retrieving conn
with findContours , throwing away contours with small area ( contourArea ), and rendering the with findContours , throwing away contours with small area ( contourArea ), and rendering the
remaining contours with drawContours. remaining contours with drawContours.
@note
- A mean-shift tracking sample can be found at opencv_source_code/samples/cpp/camshiftdemo.cpp
*/ */
CV_EXPORTS_W int meanShift( InputArray probImage, CV_IN_OUT Rect& window, TermCriteria criteria ); CV_EXPORTS_W int meanShift( InputArray probImage, CV_IN_OUT Rect& window, TermCriteria criteria );
...@@ -123,6 +123,9 @@ CV_EXPORTS_W int buildOpticalFlowPyramid( InputArray img, OutputArrayOfArrays py ...@@ -123,6 +123,9 @@ CV_EXPORTS_W int buildOpticalFlowPyramid( InputArray img, OutputArrayOfArrays py
int derivBorder = BORDER_CONSTANT, int derivBorder = BORDER_CONSTANT,
bool tryReuseInputImage = true ); bool tryReuseInputImage = true );
/** @example lkdemo.cpp
An example using the Lucas-Kanade optical flow algorithm
*/
/** @brief Calculates an optical flow for a sparse feature set using the iterative Lucas-Kanade method with /** @brief Calculates an optical flow for a sparse feature set using the iterative Lucas-Kanade method with
pyramids. pyramids.
...@@ -258,6 +261,10 @@ enum ...@@ -258,6 +261,10 @@ enum
MOTION_HOMOGRAPHY = 3 MOTION_HOMOGRAPHY = 3
}; };
/** @example image_alignment.cpp
An example using the image alignment ECC algorithm
*/
/** @brief Finds the geometric transform (warp) between two images in terms of the ECC criterion @cite EP08 . /** @brief Finds the geometric transform (warp) between two images in terms of the ECC criterion @cite EP08 .
@param templateImage single-channel template image; CV_8U or CV_32F array. @param templateImage single-channel template image; CV_8U or CV_32F array.
...@@ -313,25 +320,20 @@ CV_EXPORTS_W double findTransformECC( InputArray templateImage, InputArray input ...@@ -313,25 +320,20 @@ CV_EXPORTS_W double findTransformECC( InputArray templateImage, InputArray input
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001), TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 50, 0.001),
InputArray inputMask = noArray()); InputArray inputMask = noArray());
/** @example kalman.cpp
An example using the standard Kalman filter
*/
/** @brief Kalman filter class. /** @brief Kalman filter class.
The class implements a standard Kalman filter <http://en.wikipedia.org/wiki/Kalman_filter>, The class implements a standard Kalman filter <http://en.wikipedia.org/wiki/Kalman_filter>,
@cite Welch95 . However, you can modify transitionMatrix, controlMatrix, and measurementMatrix to get @cite Welch95 . However, you can modify transitionMatrix, controlMatrix, and measurementMatrix to get
an extended Kalman filter functionality. See the OpenCV sample kalman.cpp. an extended Kalman filter functionality.
@note In C API when CvKalman\* kalmanFilter structure is not needed anymore, it should be released
@note with cvReleaseKalman(&kalmanFilter)
- An example using the standard Kalman filter can be found at
opencv_source_code/samples/cpp/kalman.cpp
*/ */
class CV_EXPORTS_W KalmanFilter class CV_EXPORTS_W KalmanFilter
{ {
public: public:
/** @brief The constructors.
@note In C API when CvKalman\* kalmanFilter structure is not needed anymore, it should be released
with cvReleaseKalman(&kalmanFilter)
*/
CV_WRAP KalmanFilter(); CV_WRAP KalmanFilter();
/** @overload /** @overload
@param dynamParams Dimensionality of the state. @param dynamParams Dimensionality of the state.
......
...@@ -808,12 +808,12 @@ protected: ...@@ -808,12 +808,12 @@ protected:
class IVideoWriter; class IVideoWriter;
/** @example videowriter_basic.cpp
An example using VideoCapture and VideoWriter class
*/
/** @brief Video writer class. /** @brief Video writer class.
The class provides C++ API for writing video files or image sequences. The class provides C++ API for writing video files or image sequences.
Here is how the class can be used:
@include samples/cpp/videowriter_basic.cpp
*/ */
class CV_EXPORTS_W VideoWriter class CV_EXPORTS_W VideoWriter
{ {
......
...@@ -33,8 +33,6 @@ int flag1 = 0; ...@@ -33,8 +33,6 @@ int flag1 = 0;
int minx,miny,maxx,maxy,lenx,leny; int minx,miny,maxx,maxy,lenx,leny;
int channel;
void mouseHandler(int, int, int, int, void*); void mouseHandler(int, int, int, int, void*);
void mouseHandler(int event, int x, int y, int, void*) void mouseHandler(int event, int x, int y, int, void*)
...@@ -121,14 +119,22 @@ void mouseHandler(int event, int x, int y, int, void*) ...@@ -121,14 +119,22 @@ void mouseHandler(int event, int x, int y, int, void*)
} }
} }
static void help()
{
cout << "\nThis program demonstrates using mouse events"
"\nCall:\n"
"./create_mask <image_name>\n"
"\n"
"\tleft mouse button - set a point to create mask shape"
"\n"
"\tright mouse button - create mask from points\n"
"\tmiddle mouse button - reset\n" << endl;
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
cv::CommandLineParser parser(argc, argv, "{help h | | show help message}{@input | | input image}"); cv::CommandLineParser parser(argc, argv, "{@input | ../data/lena.jpg | input image}");
if (parser.has("help")) help();
{
parser.printMessage();
return 0;
}
string input_image = parser.get<string>("@input"); string input_image = parser.get<string>("@input");
if (input_image.empty()) if (input_image.empty())
{ {
...@@ -143,8 +149,6 @@ int main(int argc, char **argv) ...@@ -143,8 +149,6 @@ int main(int argc, char **argv)
img0 = src; img0 = src;
channel = img0.channels();
res1 = Mat::zeros(img0.size(),CV_8UC1); res1 = Mat::zeros(img0.size(),CV_8UC1);
final = Mat::zeros(img0.size(),CV_8UC3); final = Mat::zeros(img0.size(),CV_8UC3);
//////////// source image /////////////////// //////////// source image ///////////////////
...@@ -154,6 +158,5 @@ int main(int argc, char **argv) ...@@ -154,6 +158,5 @@ int main(int argc, char **argv)
imshow("Source", img0); imshow("Source", img0);
waitKey(0); waitKey(0);
img0.release(); return 0;
img1.release();
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "opencv2/imgproc.hpp" #include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp" #include "opencv2/highgui.hpp"
#include <stdio.h> #include <stdio.h>
using namespace cv; using namespace cv;
static void help() static void help()
...@@ -16,14 +17,9 @@ static Scalar randomColor(RNG& rng) ...@@ -16,14 +17,9 @@ static Scalar randomColor(RNG& rng)
return Scalar(icolor&255, (icolor>>8)&255, (icolor>>16)&255); return Scalar(icolor&255, (icolor>>8)&255, (icolor>>16)&255);
} }
int main(int argc, char** argv) int main()
{ {
cv::CommandLineParser parser(argc, argv, "{help h||}");
if (parser.has("help"))
{
help(); help();
return 0;
}
char wndname[] = "Drawing Demo"; char wndname[] = "Drawing Demo";
const int NUMBER = 100; const int NUMBER = 100;
const int DELAY = 5; const int DELAY = 5;
...@@ -36,7 +32,7 @@ int main(int argc, char** argv) ...@@ -36,7 +32,7 @@ int main(int argc, char** argv)
imshow(wndname, image); imshow(wndname, image);
waitKey(DELAY); waitKey(DELAY);
for (i = 0; i < NUMBER; i++) for (i = 0; i < NUMBER * 2; i++)
{ {
Point pt1, pt2; Point pt1, pt2;
pt1.x = rng.uniform(x1, x2); pt1.x = rng.uniform(x1, x2);
...@@ -44,14 +40,19 @@ int main(int argc, char** argv) ...@@ -44,14 +40,19 @@ int main(int argc, char** argv)
pt2.x = rng.uniform(x1, x2); pt2.x = rng.uniform(x1, x2);
pt2.y = rng.uniform(y1, y2); pt2.y = rng.uniform(y1, y2);
int arrowed = rng.uniform(0, 6);
if( arrowed < 3 )
line( image, pt1, pt2, randomColor(rng), rng.uniform(1,10), lineType ); line( image, pt1, pt2, randomColor(rng), rng.uniform(1,10), lineType );
else
arrowedLine(image, pt1, pt2, randomColor(rng), rng.uniform(1, 10), lineType);
imshow(wndname, image); imshow(wndname, image);
if(waitKey(DELAY) >= 0) if(waitKey(DELAY) >= 0)
return 0; return 0;
} }
for (i = 0; i < NUMBER; i++) for (i = 0; i < NUMBER * 2; i++)
{ {
Point pt1, pt2; Point pt1, pt2;
pt1.x = rng.uniform(x1, x2); pt1.x = rng.uniform(x1, x2);
...@@ -59,8 +60,13 @@ int main(int argc, char** argv) ...@@ -59,8 +60,13 @@ int main(int argc, char** argv)
pt2.x = rng.uniform(x1, x2); pt2.x = rng.uniform(x1, x2);
pt2.y = rng.uniform(y1, y2); pt2.y = rng.uniform(y1, y2);
int thickness = rng.uniform(-3, 10); int thickness = rng.uniform(-3, 10);
int marker = rng.uniform(0, 10);
int marker_size = rng.uniform(30, 80);
rectangle( image, pt1, pt2, randomColor(rng), MAX(thickness, -1), lineType ); if (marker > 5)
rectangle(image, pt1, pt2, randomColor(rng), MAX(thickness, -1), lineType);
else
drawMarker(image, pt1, randomColor(rng), marker, marker_size );
imshow(wndname, image); imshow(wndname, image);
if(waitKey(DELAY) >= 0) if(waitKey(DELAY) >= 0)
...@@ -181,7 +187,3 @@ int main(int argc, char** argv) ...@@ -181,7 +187,3 @@ int main(int argc, char** argv)
waitKey(); waitKey();
return 0; return 0;
} }
#ifdef _EiC
main(1,"drawing.c");
#endif
...@@ -53,15 +53,11 @@ const char* keys = ...@@ -53,15 +53,11 @@ const char* keys =
int main( int argc, const char** argv ) int main( int argc, const char** argv )
{ {
CommandLineParser parser(argc, argv, keys);
if (parser.has("help"))
{
help(); help();
return 0; CommandLineParser parser(argc, argv, keys);
}
string filename = parser.get<string>(0); string filename = parser.get<string>(0);
image = imread(filename, 1); image = imread(filename, IMREAD_COLOR);
if(image.empty()) if(image.empty())
{ {
printf("Cannot read image file: %s\n", filename.c_str()); printf("Cannot read image file: %s\n", filename.c_str());
......
...@@ -125,11 +125,15 @@ static Mat DrawMyImage(int thickness,int nbShape) ...@@ -125,11 +125,15 @@ static Mat DrawMyImage(int thickness,int nbShape)
return img; return img;
} }
int main(void) int main(int argc, char** argv)
{ {
ParamColorMar p; ParamColorMar p;
Mat img= DrawMyImage(2,256); Mat img;
if (argc > 1)
img = imread(argv[1], 0);
else
img = DrawMyImage(2,256);
p.img=img; p.img=img;
p.iColormap=0; p.iColormap=0;
......
...@@ -276,12 +276,9 @@ static void on_mouse( int event, int x, int y, int flags, void* param ) ...@@ -276,12 +276,9 @@ static void on_mouse( int event, int x, int y, int flags, void* param )
int main( int argc, char** argv ) int main( int argc, char** argv )
{ {
cv::CommandLineParser parser(argc, argv, "{help h||}{@input||}"); cv::CommandLineParser parser(argc, argv, "{@input| ../data/messi5.jpg |}");
if (parser.has("help"))
{
help(); help();
return 0;
}
string filename = parser.get<string>("@input"); string filename = parser.get<string>("@input");
if( filename.empty() ) if( filename.empty() )
{ {
...@@ -295,8 +292,6 @@ int main( int argc, char** argv ) ...@@ -295,8 +292,6 @@ int main( int argc, char** argv )
return 1; return 1;
} }
help();
const string winName = "image"; const string winName = "image";
namedWindow( winName, WINDOW_AUTOSIZE ); namedWindow( winName, WINDOW_AUTOSIZE );
setMouseCallback( winName, on_mouse, 0 ); setMouseCallback( winName, on_mouse, 0 );
......
...@@ -51,7 +51,7 @@ const std::string keys = ...@@ -51,7 +51,7 @@ const std::string keys =
"{e epsilon | 0.0001 | ECC's convergence epsilon }" "{e epsilon | 0.0001 | ECC's convergence epsilon }"
"{o outputWarp | outWarp.ecc | output warp (matrix) filename }" "{o outputWarp | outWarp.ecc | output warp (matrix) filename }"
"{m motionType | affine | type of motion (translation, euclidean, affine, homography) }" "{m motionType | affine | type of motion (translation, euclidean, affine, homography) }"
"{v verbose | 0 | display initial and final images }" "{v verbose | 1 | display initial and final images }"
"{w warpedImfile | warpedECC.png | warped input image }" "{w warpedImfile | warpedECC.png | warped input image }"
"{h help | | print help message }" "{h help | | print help message }"
; ;
...@@ -165,10 +165,10 @@ static void draw_warped_roi(Mat& image, const int width, const int height, Mat& ...@@ -165,10 +165,10 @@ static void draw_warped_roi(Mat& image, const int width, const int height, Mat&
GET_HOMO_VALUES(U, bottom_right.x, bottom_right.y); GET_HOMO_VALUES(U, bottom_right.x, bottom_right.y);
// draw the warped perimeter // draw the warped perimeter
line(image, top_left, top_right, Scalar(255,0,255)); line(image, top_left, top_right, Scalar(255));
line(image, top_right, bottom_right, Scalar(255,0,255)); line(image, top_right, bottom_right, Scalar(255));
line(image, bottom_right, bottom_left, Scalar(255,0,255)); line(image, bottom_right, bottom_left, Scalar(255));
line(image, bottom_left, top_left, Scalar(255,0,255)); line(image, bottom_left, top_left, Scalar(255));
} }
int main (const int argc, const char * argv[]) int main (const int argc, const char * argv[])
...@@ -177,17 +177,9 @@ int main (const int argc, const char * argv[]) ...@@ -177,17 +177,9 @@ int main (const int argc, const char * argv[])
CommandLineParser parser(argc, argv, keys); CommandLineParser parser(argc, argv, keys);
parser.about("ECC demo"); parser.about("ECC demo");
if (argc < 2) {
parser.printMessage(); parser.printMessage();
help(); help();
return 1;
}
if (parser.has("help"))
{
parser.printMessage();
help();
return 1;
}
string imgFile = parser.get<string>(0); string imgFile = parser.get<string>(0);
string tempImgFile = parser.get<string>(1); string tempImgFile = parser.get<string>(1);
string inWarpFile = parser.get<string>(2); string inWarpFile = parser.get<string>(2);
...@@ -239,10 +231,10 @@ int main (const int argc, const char * argv[]) ...@@ -239,10 +231,10 @@ int main (const int argc, const char * argv[])
} }
} }
else{ //apply random waro to input image else{ //apply random warp to input image
resize(inputImage, target_image, Size(216, 216)); resize(inputImage, target_image, Size(216, 216));
Mat warpGround; Mat warpGround;
cv::RNG rng; RNG rng(getTickCount());
double angle; double angle;
switch (mode_temp) { switch (mode_temp) {
case MOTION_TRANSLATION: case MOTION_TRANSLATION:
...@@ -299,7 +291,7 @@ int main (const int argc, const char * argv[]) ...@@ -299,7 +291,7 @@ int main (const int argc, const char * argv[])
} }
else { else {
printf("\n ->Perfomarnce Warning: Identity warp ideally assumes images of " printf("\n ->Performance Warning: Identity warp ideally assumes images of "
"similar size. If the deformation is strong, the identity warp may not " "similar size. If the deformation is strong, the identity warp may not "
"be a good initialization. \n"); "be a good initialization. \n");
...@@ -363,7 +355,8 @@ int main (const int argc, const char * argv[]) ...@@ -363,7 +355,8 @@ int main (const int argc, const char * argv[])
namedWindow ("warped image", WINDOW_AUTOSIZE); namedWindow ("warped image", WINDOW_AUTOSIZE);
namedWindow ("error (black: no error)", WINDOW_AUTOSIZE); namedWindow ("error (black: no error)", WINDOW_AUTOSIZE);
moveWindow ("template", 350, 350); moveWindow ("image", 20, 300);
moveWindow ("template", 300, 300);
moveWindow ("warped image", 600, 300); moveWindow ("warped image", 600, 300);
moveWindow ("error (black: no error)", 900, 300); moveWindow ("error (black: no error)", 900, 300);
......
...@@ -18,17 +18,12 @@ static void help(char** argv) ...@@ -18,17 +18,12 @@ static void help(char** argv)
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
cv::CommandLineParser parser(argc, argv, "{help h||}{@image||}");
if (parser.has("help"))
{
help(argv); help(argv);
return 0; cv::CommandLineParser parser(argc, argv, "{@image| ../data/left%02d.jpg |}");
}
string first_file = parser.get<string>("@image"); string first_file = parser.get<string>("@image");
if(first_file.empty()) if(first_file.empty())
{ {
help(argv);
return 1; return 1;
} }
......
...@@ -47,12 +47,9 @@ static void onMouse( int event, int x, int y, int flags, void* ) ...@@ -47,12 +47,9 @@ static void onMouse( int event, int x, int y, int flags, void* )
int main( int argc, char** argv ) int main( int argc, char** argv )
{ {
cv::CommandLineParser parser(argc, argv, "{help h||}{@image|../data/fruits.jpg|}"); cv::CommandLineParser parser(argc, argv, "{@image|../data/fruits.jpg|}");
if (parser.has("help"))
{
help(); help();
return 0;
}
string filename = parser.get<string>("@image"); string filename = parser.get<string>("@image");
Mat img0 = imread(filename, -1); Mat img0 = imread(filename, -1);
if(img0.empty()) if(img0.empty())
......
...@@ -26,12 +26,9 @@ int smoothType = GAUSSIAN; ...@@ -26,12 +26,9 @@ int smoothType = GAUSSIAN;
int main( int argc, char** argv ) int main( int argc, char** argv )
{ {
VideoCapture cap; VideoCapture cap;
cv::CommandLineParser parser(argc, argv, "{help h | | }{ c | 0 | }{ p | | }"); cv::CommandLineParser parser(argc, argv, "{ c | 0 | }{ p | | }");
if ( parser.has("help") )
{
help(); help();
return 0;
}
if( parser.get<string>("c").size() == 1 && isdigit(parser.get<string>("c")[0]) ) if( parser.get<string>("c").size() == 1 && isdigit(parser.get<string>("c")[0]) )
cap.open(parser.get<int>("c")); cap.open(parser.get<int>("c"));
else else
......
...@@ -521,7 +521,7 @@ int main( int argc, char *argv[] ) ...@@ -521,7 +521,7 @@ int main( int argc, char *argv[] )
int method = 0; int method = 0;
cv::CommandLineParser parser(argc, argv, "{data|../data/letter-recognition.data|}{save||}{load||}{boost||}" cv::CommandLineParser parser(argc, argv, "{data|../data/letter-recognition.data|}{save||}{load||}{boost||}"
"{mlp||}{knn knearest||}{nbayes||}{svm||}{help h||}"); "{mlp||}{knn knearest||}{nbayes||}{svm||}");
data_filename = parser.get<string>("data"); data_filename = parser.get<string>("data");
if (parser.has("save")) if (parser.has("save"))
filename_to_save = parser.get<string>("save"); filename_to_save = parser.get<string>("save");
...@@ -537,11 +537,9 @@ int main( int argc, char *argv[] ) ...@@ -537,11 +537,9 @@ int main( int argc, char *argv[] )
method = 4; method = 4;
else if (parser.has("svm")) else if (parser.has("svm"))
method = 5; method = 5;
if (parser.has("help"))
{
help(); help();
return 0;
}
if( (method == 0 ? if( (method == 0 ?
build_rtrees_classifier( data_filename, filename_to_save, filename_to_load ) : build_rtrees_classifier( data_filename, filename_to_save, filename_to_load ) :
method == 1 ? method == 1 ?
...@@ -555,8 +553,6 @@ int main( int argc, char *argv[] ) ...@@ -555,8 +553,6 @@ int main( int argc, char *argv[] )
method == 5 ? method == 5 ?
build_svm_classifier( data_filename, filename_to_save, filename_to_load ): build_svm_classifier( data_filename, filename_to_save, filename_to_load ):
-1) < 0) -1) < 0)
{
help();
}
return 0; return 0;
} }
...@@ -45,16 +45,11 @@ int main( int argc, char** argv ) ...@@ -45,16 +45,11 @@ int main( int argc, char** argv )
bool needToInit = false; bool needToInit = false;
bool nightMode = false; bool nightMode = false;
cv::CommandLineParser parser(argc, argv, "{@input||}{help h||}");
string input = parser.get<string>("@input");
if (parser.has("help"))
{
help(); help();
return 0; cv::CommandLineParser parser(argc, argv, "{@input|0|}");
} string input = parser.get<string>("@input");
if( input.empty() )
cap.open(0); if( input.size() == 1 && isdigit(input[0]) )
else if( input.size() == 1 && isdigit(input[0]) )
cap.open(input[0] - '0'); cap.open(input[0] - '0');
else else
cap.open(input); cap.open(input);
......
...@@ -19,16 +19,12 @@ static void help() ...@@ -19,16 +19,12 @@ static void help()
int main( int argc, const char** argv ) int main( int argc, const char** argv )
{ {
help();
cv::CommandLineParser parser(argc, argv, cv::CommandLineParser parser(argc, argv,
"{help h||}"
"{ i | ../data/lena_tmpl.jpg | }" "{ i | ../data/lena_tmpl.jpg | }"
"{ t | ../data/tmpl.png | }" "{ t | ../data/tmpl.png | }"
"{ m | ../data/mask.png | }"); "{ m | ../data/mask.png | }");
if (parser.has("help"))
{
help();
return 0;
}
string filename = parser.get<string>("i"); string filename = parser.get<string>("i");
string tmplname = parser.get<string>("t"); string tmplname = parser.get<string>("t");
string maskname = parser.get<string>("m"); string maskname = parser.get<string>("m");
......
...@@ -28,7 +28,7 @@ using namespace cv; ...@@ -28,7 +28,7 @@ using namespace cv;
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
cv::CommandLineParser parser(argc, argv, "{help h||show help message}{@image||input image}"); cv::CommandLineParser parser(argc, argv, "{help h||show help message}{@image|../data/lena.jpg|input image}");
if (parser.has("help")) if (parser.has("help"))
{ {
parser.printMessage(); parser.printMessage();
......
...@@ -53,14 +53,13 @@ int main( int argc, char** argv ) ...@@ -53,14 +53,13 @@ int main( int argc, char** argv )
break; break;
Point2f center( (float)frame.cols / 2, (float)frame.rows / 2 ); Point2f center( (float)frame.cols / 2, (float)frame.rows / 2 );
double radius = (double)frame.cols / 4; double M = 70;
double M = (double)frame.cols / log(radius);
logPolar(frame,log_polar_img, center, M, INTER_LINEAR + WARP_FILL_OUTLIERS); logPolar(frame,log_polar_img, center, M, INTER_LINEAR + WARP_FILL_OUTLIERS);
linearPolar(frame,lin_polar_img, center, radius, INTER_LINEAR + WARP_FILL_OUTLIERS); linearPolar(frame,lin_polar_img, center, M, INTER_LINEAR + WARP_FILL_OUTLIERS);
logPolar(log_polar_img, recovered_log_polar, center, M, WARP_INVERSE_MAP + INTER_LINEAR); logPolar(log_polar_img, recovered_log_polar, center, M, WARP_INVERSE_MAP + INTER_LINEAR);
linearPolar(lin_polar_img, recovered_lin_polar_img, center, radius, WARP_INVERSE_MAP + INTER_LINEAR + WARP_FILL_OUTLIERS); linearPolar(lin_polar_img, recovered_lin_polar_img, center, M, WARP_INVERSE_MAP + INTER_LINEAR + WARP_FILL_OUTLIERS);
imshow("Log-Polar", log_polar_img ); imshow("Log-Polar", log_polar_img );
imshow("Linear-Polar", lin_polar_img ); imshow("Linear-Polar", lin_polar_img );
......
...@@ -115,6 +115,7 @@ int main(int argc, char** argv) ...@@ -115,6 +115,7 @@ int main(int argc, char** argv)
resize(iiIm, bestToShow, sz2Sh); resize(iiIm, bestToShow, sz2Sh);
imshow("BEST MATCH", bestToShow); imshow("BEST MATCH", bestToShow);
moveWindow("BEST MATCH", sz2Sh.width+50,0); moveWindow("BEST MATCH", sz2Sh.width+50,0);
waitKey();
return 0; return 0;
} }
...@@ -40,10 +40,15 @@ static void on_trackbar( int, void* ) ...@@ -40,10 +40,15 @@ static void on_trackbar( int, void* )
* @function main * @function main
* @brief Main function * @brief Main function
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
/// Read image given by user /// Read image given by user
image = imread( argv[1] ); String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
image = imread( imageName );
/// Initialize values /// Initialize values
alpha = 1; alpha = 1;
...@@ -54,8 +59,8 @@ int main( int, char** argv ) ...@@ -54,8 +59,8 @@ int main( int, char** argv )
namedWindow("New Image", 1); namedWindow("New Image", 1);
/// Create Trackbars /// Create Trackbars
createTrackbar( "Contrast Trackbar", "New Image", &alpha, alpha_max, on_trackbar ); createTrackbar( "Contrast", "New Image", &alpha, alpha_max, on_trackbar );
createTrackbar( "Brightness Trackbar", "New Image", &beta, beta_max, on_trackbar ); createTrackbar( "Brightness", "New Image", &beta, beta_max, on_trackbar );
/// Show some stuff /// Show some stuff
imshow("Original Image", image); imshow("Original Image", image);
......
...@@ -15,7 +15,7 @@ using namespace cv; ...@@ -15,7 +15,7 @@ using namespace cv;
* @function main * @function main
* @brief Main function * @brief Main function
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//! [basic-linear-transform-parameters] //! [basic-linear-transform-parameters]
double alpha = 1.0; /*< Simple contrast control */ double alpha = 1.0; /*< Simple contrast control */
...@@ -24,7 +24,12 @@ int main( int, char** argv ) ...@@ -24,7 +24,12 @@ int main( int, char** argv )
/// Read image given by user /// Read image given by user
//! [basic-linear-transform-load] //! [basic-linear-transform-load]
Mat image = imread( argv[1] ); String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
Mat image = imread( imageName );
//! [basic-linear-transform-load] //! [basic-linear-transform-load]
//! [basic-linear-transform-output] //! [basic-linear-transform-output]
Mat new_image = Mat::zeros( image.size(), image.type() ); Mat new_image = Mat::zeros( image.size(), image.type() );
......
...@@ -29,10 +29,15 @@ void Morphology_Operations( int, void* ); ...@@ -29,10 +29,15 @@ void Morphology_Operations( int, void* );
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//![load] //![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/baboon.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread(imageName, IMREAD_COLOR); // Load an image
if( src.empty() ) if( src.empty() )
{ return -1; } { return -1; }
......
...@@ -30,10 +30,15 @@ void Threshold_Demo( int, void* ); ...@@ -30,10 +30,15 @@ void Threshold_Demo( int, void* );
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//! [load] //! [load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/stuff.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() ) if( src.empty() )
{ return -1; } { return -1; }
......
...@@ -58,9 +58,16 @@ void on_gamma_correction_trackbar(int, void *) ...@@ -58,9 +58,16 @@ void on_gamma_correction_trackbar(int, void *)
} }
} }
int main( int, char** argv ) int main( int argc, char** argv )
{ {
img_original = imread( argv[1] );
String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
img_original = imread( imageName );
img_corrected = Mat(img_original.rows, img_original.cols*2, img_original.type()); img_corrected = Mat(img_original.rows, img_original.cols*2, img_original.type());
img_gamma_corrected = Mat(img_original.rows, img_original.cols*2, img_original.type()); img_gamma_corrected = Mat(img_original.rows, img_original.cols*2, img_original.type());
......
...@@ -21,7 +21,7 @@ namespace ...@@ -21,7 +21,7 @@ namespace
const std::string usage = "Usage : tutorial_HoughCircle_Demo <path_to_input_image>\n"; const std::string usage = "Usage : tutorial_HoughCircle_Demo <path_to_input_image>\n";
// initial and max values of the parameters of interests. // initial and max values of the parameters of interests.
const int cannyThresholdInitialValue = 200; const int cannyThresholdInitialValue = 100;
const int accumulatorThresholdInitialValue = 50; const int accumulatorThresholdInitialValue = 50;
const int maxAccumulatorThreshold = 200; const int maxAccumulatorThreshold = 200;
const int maxCannyThreshold = 255; const int maxCannyThreshold = 255;
...@@ -55,15 +55,13 @@ int main(int argc, char** argv) ...@@ -55,15 +55,13 @@ int main(int argc, char** argv)
{ {
Mat src, src_gray; Mat src, src_gray;
if (argc < 2) // Read the image
String imageName("../data/stuff.jpg"); // by default
if (argc > 1)
{ {
std::cerr<<"No input image specified\n"; imageName = argv[1];
std::cout<<usage;
return -1;
} }
src = imread( imageName, IMREAD_COLOR );
// Read the image
src = imread( argv[1], IMREAD_COLOR );
if( src.empty() ) if( src.empty() )
{ {
......
...@@ -35,10 +35,15 @@ void Probabilistic_Hough( int, void* ); ...@@ -35,10 +35,15 @@ void Probabilistic_Hough( int, void* );
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
/// Read the image // Read the image
src = imread( argv[1], IMREAD_COLOR ); String imageName("../data/building.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR );
if( src.empty() ) if( src.empty() )
{ help(); { help();
......
...@@ -13,7 +13,7 @@ using namespace cv; ...@@ -13,7 +13,7 @@ using namespace cv;
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//![variables] //![variables]
Mat src, src_gray, dst; Mat src, src_gray, dst;
...@@ -25,7 +25,12 @@ int main( int, char** argv ) ...@@ -25,7 +25,12 @@ int main( int, char** argv )
//![variables] //![variables]
//![load] //![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() ) if( src.empty() )
{ return -1; } { return -1; }
......
...@@ -23,10 +23,12 @@ void update_map( void ); ...@@ -23,10 +23,12 @@ void update_map( void );
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main(int argc, const char** argv)
{ {
/// Load the image /// Load the image
src = imread( argv[1], IMREAD_COLOR ); CommandLineParser parser(argc, argv, "{@image |../data/chicky_512.png|input image name}");
std::string filename = parser.get<std::string>(0);
src = imread( filename, IMREAD_COLOR );
/// Create dst, map_x and map_y with the same size as src: /// Create dst, map_x and map_y with the same size as src:
dst.create( src.size(), src.type() ); dst.create( src.size(), src.type() );
......
...@@ -13,7 +13,7 @@ using namespace cv; ...@@ -13,7 +13,7 @@ using namespace cv;
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//![variables] //![variables]
Mat src, src_gray; Mat src, src_gray;
...@@ -25,7 +25,12 @@ int main( int, char** argv ) ...@@ -25,7 +25,12 @@ int main( int, char** argv )
//![variables] //![variables]
//![load] //![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() ) if( src.empty() )
{ return -1; } { return -1; }
......
...@@ -21,10 +21,15 @@ RNG rng(12345); ...@@ -21,10 +21,15 @@ RNG rng(12345);
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
//![load] //![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() ) if( src.empty() )
{ {
......
...@@ -13,7 +13,7 @@ using namespace cv; ...@@ -13,7 +13,7 @@ using namespace cv;
/** /**
* @function main * @function main
*/ */
int main ( int, char** argv ) int main ( int argc, char** argv )
{ {
/// Declare variables /// Declare variables
Mat src, dst; Mat src, dst;
...@@ -26,7 +26,12 @@ int main ( int, char** argv ) ...@@ -26,7 +26,12 @@ int main ( int, char** argv )
const char* window_name = "filter2D Demo"; const char* window_name = "filter2D Demo";
//![load] //![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image String imageName("../data/lena.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread( imageName, IMREAD_COLOR ); // Load an image
if( src.empty() ) if( src.empty() )
{ return -1; } { return -1; }
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
using namespace std; using namespace std;
using namespace cv; using namespace cv;
int main(int, char** argv) int main()
{ {
//! [load_image] //! [load_image]
// Load the image // Load the image
Mat src = imread(argv[1]); Mat src = imread("../data/cards.png");
// Check if everything was fine // Check if everything was fine
if (!src.data) if (!src.data)
......
...@@ -23,10 +23,16 @@ void thresh_callback(int, void* ); ...@@ -23,10 +23,16 @@ void thresh_callback(int, void* );
/** /**
* @function main * @function main
*/ */
int main( int, char** argv ) int main( int argc, char** argv )
{ {
/// Load source image /// Load source image
src = imread(argv[1], IMREAD_COLOR); String imageName("../data/happyfish.jpg"); // by default
if (argc > 1)
{
imageName = argv[1];
}
src = imread(imageName, IMREAD_COLOR);
if (src.empty()) if (src.empty())
{ {
cerr << "No image supplied ..." << endl; cerr << "No image supplied ..." << endl;
......
...@@ -19,14 +19,13 @@ void readme(); ...@@ -19,14 +19,13 @@ void readme();
* @function main * @function main
* @brief Main function * @brief Main function
*/ */
int main( int argc, char** argv ) int main()
{ {
if( argc != 3 ) readme();
{ readme(); return -1; }
//-- 1. Read the images //-- 1. Read the images
Mat imgLeft = imread( argv[1], IMREAD_GRAYSCALE ); Mat imgLeft = imread( "../data/rubberwhale1.png", IMREAD_GRAYSCALE );
Mat imgRight = imread( argv[2], IMREAD_GRAYSCALE ); Mat imgRight = imread( "../data/rubberwhale2.png", IMREAD_GRAYSCALE );
//-- And create the image in which we will save our disparities //-- And create the image in which we will save our disparities
Mat imgDisparity16S = Mat( imgLeft.rows, imgLeft.cols, CV_16S ); Mat imgDisparity16S = Mat( imgLeft.rows, imgLeft.cols, CV_16S );
Mat imgDisparity8U = Mat( imgLeft.rows, imgLeft.cols, CV_8UC1 ); Mat imgDisparity8U = Mat( imgLeft.rows, imgLeft.cols, CV_8UC1 );
......
...@@ -63,7 +63,7 @@ int main(void) ...@@ -63,7 +63,7 @@ int main(void)
Mat res; Mat res;
drawMatches(img1, inliers1, img2, inliers2, good_matches, res); drawMatches(img1, inliers1, img2, inliers2, good_matches, res);
imwrite("res.png", res); imwrite("akaze_result.png", res);
double inlier_ratio = inliers1.size() * 1.0 / matched1.size(); double inlier_ratio = inliers1.size() * 1.0 / matched1.size();
cout << "A-KAZE Matching Results" << endl; cout << "A-KAZE Matching Results" << endl;
...@@ -75,5 +75,8 @@ int main(void) ...@@ -75,5 +75,8 @@ int main(void)
cout << "# Inliers Ratio: \t" << inlier_ratio << endl; cout << "# Inliers Ratio: \t" << inlier_ratio << endl;
cout << endl; cout << endl;
imshow("result", res);
waitKey();
return 0; return 0;
} }
...@@ -120,27 +120,27 @@ Mat Tracker::process(const Mat frame, Stats& stats) ...@@ -120,27 +120,27 @@ Mat Tracker::process(const Mat frame, Stats& stats)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
if(argc < 2) {
cerr << "Usage: " << endl cerr << "Usage: " << endl
<< "akaze_track input_path" << endl << "akaze_track input_path" << endl
<< " (input_path can be a camera id, like 0,1,2 or a video filename)" << endl; << " (input_path can be a camera id, like 0,1,2 or a video filename)" << endl;
return 1;
}
std::string video_name = argv[1]; CommandLineParser parser(argc, argv, "{@input_path |0|input path can be a camera id, like 0,1,2 or a video filename}");
std::stringstream ssFormat; string input_path = parser.get<string>(0);
ssFormat << atoi(argv[1]); string video_name = input_path;
VideoCapture video_in; VideoCapture video_in;
if (video_name.compare(ssFormat.str())==0) { //test str==str(num)
video_in.open(atoi(argv[1])); if ( ( isdigit(input_path[0]) && input_path.size() == 1 ) )
{
int camera_no = input_path[0] - '0';
video_in.open( camera_no );
} }
else { else {
video_in.open(video_name); video_in.open(video_name);
} }
if(!video_in.isOpened()) { if(!video_in.isOpened()) {
cerr << "Couldn't open " << argv[1] << endl; cerr << "Couldn't open " << video_name << endl;
return 1; return 1;
} }
......
...@@ -94,12 +94,16 @@ double getOrientation(const vector<Point> &pts, Mat &img) ...@@ -94,12 +94,16 @@ double getOrientation(const vector<Point> &pts, Mat &img)
/** /**
* @function main * @function main
*/ */
int main(int, char** argv) int main(int argc, char** argv)
{ {
//! [pre-process] //! [pre-process]
// Load image // Load image
// Mat src = imread("pca_test1.jpg"); String imageName("../data/pca_test1.jpg"); // by default
Mat src = imread(argv[1]); if (argc > 1)
{
imageName = argv[1];
}
Mat src = imread( imageName );
// Check if image is loaded successfully // Check if image is loaded successfully
if(!src.data || src.empty()) if(!src.data || src.empty())
......
...@@ -81,7 +81,7 @@ int main(void) ...@@ -81,7 +81,7 @@ int main(void)
Mat res; Mat res;
drawMatches(img1, inliers1, img2, inliers2, good_matches, res); drawMatches(img1, inliers1, img2, inliers2, good_matches, res);
imwrite("../../samples/data/latch_res.png", res); imwrite("latch_result.png", res);
double inlier_ratio = inliers1.size() * 1.0 / matched1.size(); double inlier_ratio = inliers1.size() * 1.0 / matched1.size();
...@@ -93,6 +93,10 @@ int main(void) ...@@ -93,6 +93,10 @@ int main(void)
cout << "# Inliers: \t" << inliers1.size() << endl; cout << "# Inliers: \t" << inliers1.size() << endl;
cout << "# Inliers Ratio: \t" << inlier_ratio << endl; cout << "# Inliers Ratio: \t" << inlier_ratio << endl;
cout << endl; cout << endl;
imshow("result", res);
waitKey();
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册