Merge remote-tracking branch 'origin/2.4' into merge-2.4
Conflicts: .gitignore doc/tutorials/objdetect/cascade_classifier/cascade_classifier.rst modules/gpu/src/match_template.cpp modules/imgproc/include/opencv2/imgproc/imgproc.hpp modules/ocl/include/opencv2/ocl/ocl.hpp modules/ocl/perf/perf_precomp.hpp
This commit is contained in:
@@ -54,6 +54,6 @@ endif()
|
||||
if (INSTALL_C_EXAMPLES AND NOT WIN32)
|
||||
file(GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd )
|
||||
install(FILES ${install_list}
|
||||
DESTINATION share/opencv/samples/${project}
|
||||
DESTINATION share/OpenCV/samples/${project}
|
||||
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
|
||||
endif()
|
||||
|
52
samples/ocl/adaptive_bilateral_filter.cpp
Normal file
52
samples/ocl/adaptive_bilateral_filter.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
// This sample shows the difference of adaptive bilateral filter and bilateral filter.
|
||||
#include "opencv2/core.hpp"
|
||||
#include "opencv2/core/utility.hpp"
|
||||
#include "opencv2/imgproc.hpp"
|
||||
#include "opencv2/highgui.hpp"
|
||||
#include "opencv2/ocl.hpp"
|
||||
|
||||
using namespace cv;
|
||||
using namespace std;
|
||||
|
||||
|
||||
int main( int argc, const char** argv )
|
||||
{
|
||||
const char* keys =
|
||||
"{ i input | | specify input image }"
|
||||
"{ k ksize | 5 | specify kernel size }";
|
||||
CommandLineParser cmd(argc, argv, keys);
|
||||
string src_path = cmd.get<string>("i");
|
||||
int ks = cmd.get<int>("k");
|
||||
const char * winName[] = {"input", "adaptive bilateral CPU", "adaptive bilateral OpenCL", "bilateralFilter OpenCL"};
|
||||
|
||||
Mat src = imread(src_path);
|
||||
Mat abFilterCPU;
|
||||
if(src.empty()){
|
||||
//cout << "error read image: " << src_path << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::vector<ocl::Info> infos;
|
||||
ocl::getDevice(infos);
|
||||
|
||||
ocl::oclMat dsrc(src), dABFilter, dBFilter;
|
||||
|
||||
Size ksize(ks, ks);
|
||||
adaptiveBilateralFilter(src,abFilterCPU, ksize, 10);
|
||||
ocl::adaptiveBilateralFilter(dsrc, dABFilter, ksize, 10);
|
||||
ocl::bilateralFilter(dsrc, dBFilter, ks, 30, 9);
|
||||
|
||||
Mat abFilter = dABFilter;
|
||||
Mat bFilter = dBFilter;
|
||||
imshow(winName[0], src);
|
||||
|
||||
imshow(winName[1], abFilterCPU);
|
||||
|
||||
imshow(winName[2], abFilter);
|
||||
|
||||
imshow(winName[3], bFilter);
|
||||
|
||||
waitKey();
|
||||
return 0;
|
||||
|
||||
}
|
136
samples/ocl/bgfg_segm.cpp
Normal file
136
samples/ocl/bgfg_segm.cpp
Normal file
@@ -0,0 +1,136 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "opencv2/core.hpp"
|
||||
#include "opencv2/core/utility.hpp"
|
||||
#include "opencv2/ocl.hpp"
|
||||
#include "opencv2/highgui.hpp"
|
||||
|
||||
using namespace std;
|
||||
using namespace cv;
|
||||
using namespace cv::ocl;
|
||||
|
||||
#define M_MOG 1
|
||||
#define M_MOG2 2
|
||||
|
||||
int main(int argc, const char** argv)
|
||||
{
|
||||
|
||||
cv::CommandLineParser cmd(argc, argv,
|
||||
"{ c camera | false | use camera }"
|
||||
"{ f file | 768x576.avi | input video file }"
|
||||
"{ m method | mog | method (mog, mog2) }"
|
||||
"{ h help | false | print help message }");
|
||||
|
||||
if (cmd.get<bool>("help"))
|
||||
{
|
||||
cout << "Usage : bgfg_segm [options]" << endl;
|
||||
cout << "Avaible options:" << endl;
|
||||
cmd.printMessage();
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool useCamera = cmd.get<bool>("camera");
|
||||
string file = cmd.get<string>("file");
|
||||
string method = cmd.get<string>("method");
|
||||
|
||||
if (method != "mog" && method != "mog2")
|
||||
{
|
||||
cerr << "Incorrect method" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int m = method == "mog" ? M_MOG : M_MOG2;
|
||||
|
||||
VideoCapture cap;
|
||||
|
||||
if (useCamera)
|
||||
cap.open(0);
|
||||
else
|
||||
cap.open(file);
|
||||
|
||||
if (!cap.isOpened())
|
||||
{
|
||||
cerr << "can not open camera or video file" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::vector<cv::ocl::Info>info;
|
||||
cv::ocl::getDevice(info);
|
||||
|
||||
Mat frame;
|
||||
cap >> frame;
|
||||
|
||||
oclMat d_frame(frame);
|
||||
|
||||
cv::ocl::MOG mog;
|
||||
cv::ocl::MOG2 mog2;
|
||||
|
||||
oclMat d_fgmask;
|
||||
oclMat d_fgimg;
|
||||
oclMat d_bgimg;
|
||||
|
||||
d_fgimg.create(d_frame.size(), d_frame.type());
|
||||
|
||||
Mat fgmask;
|
||||
Mat fgimg;
|
||||
Mat bgimg;
|
||||
|
||||
switch (m)
|
||||
{
|
||||
case M_MOG:
|
||||
mog(d_frame, d_fgmask, 0.01f);
|
||||
break;
|
||||
|
||||
case M_MOG2:
|
||||
mog2(d_frame, d_fgmask);
|
||||
break;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
cap >> frame;
|
||||
if (frame.empty())
|
||||
break;
|
||||
d_frame.upload(frame);
|
||||
|
||||
int64 start = cv::getTickCount();
|
||||
|
||||
//update the model
|
||||
switch (m)
|
||||
{
|
||||
case M_MOG:
|
||||
mog(d_frame, d_fgmask, 0.01f);
|
||||
mog.getBackgroundImage(d_bgimg);
|
||||
break;
|
||||
|
||||
case M_MOG2:
|
||||
mog2(d_frame, d_fgmask);
|
||||
mog2.getBackgroundImage(d_bgimg);
|
||||
break;
|
||||
}
|
||||
|
||||
double fps = cv::getTickFrequency() / (cv::getTickCount() - start);
|
||||
std::cout << "FPS : " << fps << std::endl;
|
||||
|
||||
d_fgimg.setTo(Scalar::all(0));
|
||||
d_frame.copyTo(d_fgimg, d_fgmask);
|
||||
|
||||
d_fgmask.download(fgmask);
|
||||
d_fgimg.download(fgimg);
|
||||
if (!d_bgimg.empty())
|
||||
d_bgimg.download(bgimg);
|
||||
|
||||
imshow("image", frame);
|
||||
imshow("foreground mask", fgmask);
|
||||
imshow("foreground image", fgimg);
|
||||
if (!bgimg.empty())
|
||||
imshow("mean background image", bgimg);
|
||||
|
||||
int key = waitKey(30);
|
||||
if (key == 27)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@@ -45,6 +45,10 @@ int main(int argc, char** argv)
|
||||
namedWindow("CLAHE");
|
||||
createTrackbar("Tile Size", "CLAHE", &tilesize, 32, (TrackbarCallback)TSize_Callback);
|
||||
createTrackbar("Clip Limit", "CLAHE", &cliplimit, 20, (TrackbarCallback)Clip_Callback);
|
||||
|
||||
vector<ocl::Info> info;
|
||||
CV_Assert(ocl::getDevice(info));
|
||||
|
||||
Mat frame, outframe;
|
||||
ocl::oclMat d_outframe;
|
||||
|
||||
|
@@ -31,6 +31,11 @@
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# ------------------------------------------------------------------------------------------------
|
||||
# Note:
|
||||
# When using the FaceRecognizer interface in combination with Python, please stick to Python 2.
|
||||
# Some underlying scripts like create_csv will not work in other versions, like Python 3.
|
||||
# ------------------------------------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
Reference in New Issue
Block a user