This commit is contained in:
Konstantin Matskevich 2014-01-24 13:37:19 +04:00
parent 450ea3131f
commit 07778e1760
6 changed files with 33 additions and 124 deletions

View File

@ -15,7 +15,7 @@ using namespace cv;
int main(int argc, const char** argv) int main(int argc, const char** argv)
{ {
cv::CommandLineParser cmd(argc, argv, CommandLineParser cmd(argc, argv,
"{ c camera | false | use camera }" "{ c camera | false | use camera }"
"{ f file | 768x576.avi | input video file }" "{ f file | 768x576.avi | input video file }"
"{ t type | mog | method's type (mog, mog2) }" "{ t type | mog | method's type (mog, mog2) }"
@ -58,8 +58,8 @@ int main(int argc, const char** argv)
cap >> frame; cap >> frame;
fgimg.create(frame.size(), frame.type()); fgimg.create(frame.size(), frame.type());
Ptr<cv::BackgroundSubtractorMOG> mog = createBackgroundSubtractorMOG(); Ptr<BackgroundSubtractorMOG> mog = createBackgroundSubtractorMOG();
cv::Ptr<cv::BackgroundSubtractorMOG2> mog2 = createBackgroundSubtractorMOG2(); Ptr<BackgroundSubtractorMOG2> mog2 = createBackgroundSubtractorMOG2();
switch (m) switch (m)
{ {
@ -80,7 +80,7 @@ int main(int argc, const char** argv)
if (frame.empty()) if (frame.empty())
break; break;
int64 start = cv::getTickCount(); int64 start = getTickCount();
//update the model //update the model
switch (m) switch (m)
@ -94,7 +94,7 @@ int main(int argc, const char** argv)
break; break;
} }
double fps = cv::getTickFrequency() / (cv::getTickCount() - start); double fps = getTickFrequency() / (getTickCount() - start);
std::cout << "FPS : " << fps << std::endl; std::cout << "FPS : " << fps << std::endl;
std::cout << fgimg.size() << std::endl; std::cout << fgimg.size() << std::endl;
fgimg.setTo(Scalar::all(0)); fgimg.setTo(Scalar::all(0));
@ -113,8 +113,8 @@ int main(int argc, const char** argv)
break; break;
case 'm': case 'm':
case 'M': case 'M':
ocl::setUseOpenCL(!cv::ocl::useOpenCL()); ocl::setUseOpenCL(!ocl::useOpenCL());
cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL" : "CPU") << " mode\n"; cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL enabled" : "CPU") << " mode\n";
break; break;
} }
} }

View File

@ -100,7 +100,7 @@ int main(int argc, char** argv)
else if(key == 'm') else if(key == 'm')
{ {
ocl::setUseOpenCL(!cv::ocl::useOpenCL()); ocl::setUseOpenCL(!cv::ocl::useOpenCL());
cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL" : "CPU") << " mode\n"; cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL enabled" : "CPU") << " mode\n";
} }
} }
return EXIT_SUCCESS; return EXIT_SUCCESS;

View File

@ -269,7 +269,7 @@ void App::handleKey(char key)
case 'm': case 'm':
case 'M': case 'M':
ocl::setUseOpenCL(!cv::ocl::useOpenCL()); ocl::setUseOpenCL(!cv::ocl::useOpenCL());
cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL" : "CPU") << " mode\n"; cout << "Switched to " << (ocl::useOpenCL() ? "OpenCL enabled" : "CPU") << " mode\n";
break; break;
case 'g': case 'g':
case 'G': case 'G':

View File

@ -1,104 +0,0 @@
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
#include "opencv2/core/ocl.hpp"
using namespace cv;
static void help()
{
printf("\nShow off image morphology: erosion, dialation, open and close\n"
"Call:\n morphology2 [image]\n"
"This program also shows use of rect, elipse and cross kernels\n\n");
printf( "Hot keys: \n"
"\tESC - quit the program\n"
"\tr - use rectangle structuring element\n"
"\te - use elliptic structuring element\n"
"\tc - use cross-shaped structuring element\n"
"\tSPACE - loop through all the options\n"
"\tm - switch openCL mode support\n");
}
UMat src, dst;
int element_shape = MORPH_RECT;
//the address of variable which receives trackbar position update
int max_iters = 10;
int open_close_pos = 0;
int erode_dilate_pos = 0;
// callback function for open/close trackbar
static void OpenClose(int, void*)
{
int n = open_close_pos - max_iters;
int an = n > 0 ? n : -n;
Mat element = getStructuringElement(element_shape, Size(an*2+1, an*2+1), Point(an, an) );
if( n < 0 )
morphologyEx(src, dst, MORPH_OPEN, element);
else
morphologyEx(src, dst, MORPH_CLOSE, element);
imshow("Open/Close",dst);
}
// callback function for erode/dilate trackbar
static void ErodeDilate(int, void*)
{
int n = erode_dilate_pos - max_iters;
int an = n > 0 ? n : -n;
Mat element = getStructuringElement(element_shape, Size(an*2+1, an*2+1), Point(an, an) );
if( n < 0 )
erode(src, dst, element);
else
dilate(src, dst, element);
imshow("Erode/Dilate",dst);
}
int main( int argc, char** argv )
{
char* filename = argc == 2 ? argv[1] : (char*)"baboon.jpg";
imread(filename,1).copyTo(src);
if( src.u == 0 )
return -1;
help();
//create windows for output images
namedWindow("Open/Close",1);
namedWindow("Erode/Dilate",1);
open_close_pos = erode_dilate_pos = max_iters;
createTrackbar("iterations", "Open/Close",&open_close_pos,max_iters*2+1,OpenClose);
createTrackbar("iterations", "Erode/Dilate",&erode_dilate_pos,max_iters*2+1,ErodeDilate);
for(;;)
{
int c;
OpenClose(open_close_pos, 0);
ErodeDilate(erode_dilate_pos, 0);
c = waitKey(0);
if( (char)c == 27 )
break;
if( (char)c == 'e' )
element_shape = MORPH_ELLIPSE;
else if( (char)c == 'r' )
element_shape = MORPH_RECT;
else if( (char)c == 'c' )
element_shape = MORPH_CROSS;
else if( (char)c == ' ' )
element_shape = (element_shape + 1) % 3;
else if( (char)c == 'm' )
{
cv::ocl::setUseOpenCL(!cv::ocl::useOpenCL());
printf("OpenCL is %s\n", ocl::useOpenCL() ? "enabled" : "disabled");
}
}
return 0;
}

View File

@ -140,7 +140,7 @@ static UMat drawSquaresBoth( const UMat& image,
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
const char* keys = const char* keys =
"{ i input | | specify input image }" "{ i input | pic1.png | specify input image }"
"{ o output | squares_output.jpg | specify output save path}" "{ o output | squares_output.jpg | specify output save path}"
"{ h help | false | print help message }" "{ h help | false | print help message }"
"{ m cpu_mode | false | run without OpenCL }"; "{ m cpu_mode | false | run without OpenCL }";
@ -172,6 +172,7 @@ int main(int argc, char** argv)
if( image.empty() ) if( image.empty() )
{ {
cout << "Couldn't load " << inputName << endl; cout << "Couldn't load " << inputName << endl;
cmd.printMessage();
return EXIT_FAILURE; return EXIT_FAILURE;
} }

View File

@ -30,7 +30,7 @@ static void workEnd()
static double getTime() static double getTime()
{ {
return work_end /((double)getTickFrequency() * 1000.); return work_end /((double)getTickFrequency() )* 1000.;
} }
template<class KPDetector> template<class KPDetector>
@ -136,11 +136,11 @@ static Mat drawGoodMatches(
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
const char* keys = const char* keys =
"{ h help | false | print help message }" "{ h help | false | print help message }"
"{ l left | | specify left image }" "{ l left | box.png | specify left image }"
"{ r right | | specify right image }" "{ r right | box_in_scene.png | specify right image }"
"{ o output | SURF_output.jpg | specify output save path }" "{ o output | SURF_output.jpg | specify output save path }"
"{ m cpu_mode | false | run without OpenCL }"; "{ m cpu_mode | false | run without OpenCL }";
CommandLineParser cmd(argc, argv, keys); CommandLineParser cmd(argc, argv, keys);
if (cmd.has("help")) if (cmd.has("help"))
@ -160,11 +160,23 @@ int main(int argc, char* argv[])
std::string outpath = cmd.get<std::string>("o"); std::string outpath = cmd.get<std::string>("o");
imread(cmd.get<std::string>("l"), IMREAD_GRAYSCALE).copyTo(img1); std::string leftName = cmd.get<std::string>("l");
CV_Assert(!img1.empty()); imread(leftName, IMREAD_GRAYSCALE).copyTo(img1);
if(img1.empty())
{
std::cout << "Couldn't load " << leftName << std::endl;
cmd.printMessage();
return EXIT_FAILURE;
}
imread(cmd.get<std::string>("r"), IMREAD_GRAYSCALE).copyTo(img2); std::string rightName = cmd.get<std::string>("r");
CV_Assert(!img2.empty()); imread(rightName, IMREAD_GRAYSCALE).copyTo(img2);
if(img2.empty())
{
std::cout << "Couldn't load " << rightName << std::endl;
cmd.printMessage();
return EXIT_FAILURE;
}
double surf_time = 0.; double surf_time = 0.;