minor build system changes (now cuda code in opencv_core is compiled using CUDA_ARCH* cmake variables)
set(HAVE_OPENNI TRUE)
# the check: are PrimeSensor Modules for OpenNI installed
if(WIN32)
- find_file(OPENNI_PRIME_SENSOR_MODULE "XnCore.dll" PATHS "c:/Program Files/Prime Sense/Sensor/Bin" DOC "Core library of PrimeSensor Modules for OpenNI")
+ find_file(OPENNI_PRIME_SENSOR_MODULE "XnCore.dll"
+ PATHS
+ "c:/Program Files/Prime Sense/Sensor/Bin"
+ "c:/Program Files (x86)/Prime Sense/Sensor/Bin"
+ "c:/Program Files/PrimeSense/SensorKinect/Bin"
+ "c:/Program Files (x86)/PrimeSense/SensorKinect/Bin"
+ DOC "Core library of PrimeSensor Modules for OpenNI")
elseif(UNIX OR APPLE)
find_library(OPENNI_PRIME_SENSOR_MODULE "XnCore" PATHS "/usr/lib" DOC "Core library of PrimeSensor Modules for OpenNI")
endif()
void print_information_8(int j, int N, int k, int l, double diff);\r
};\r
\r
-CV_HomographyTest::CV_HomographyTest() : max_diff(1e-2), max_2diff(2e-2)\r
+CV_HomographyTest::CV_HomographyTest() : max_diff(1e-2f), max_2diff(2e-2f)\r
{\r
method = 0;\r
- image_size = 1e+2;\r
+ image_size = 100;\r
reproj_threshold = 3.0;\r
sigma = 0.01;\r
}\r
{
for( int j = i; j < dists.cols; j++ )
{
- float dist = norm(src.at<Point3_<uchar> >(i) - src.at<Point3_<uchar> >(j));
+ float dist = (float)norm(src.at<Point3_<uchar> >(i) - src.at<Point3_<uchar> >(j));
dists.at<float>(j, i) = dists.at<float>(i, j) = dist;
}
}
bool _initLogRetinaSampling(const double reductionFactor, const double samplingStrenght);
bool _initLogPolarCortexSampling(const double reductionFactor, const double samplingStrenght);
+ ImageLogPolProjection(const ImageLogPolProjection&);
+ ImageLogPolProjection& operator=(const ImageLogPolProjection&);
+
};
}
* @param sensitivity: strenght of the sigmoide
* @param maxOutputValue: the maximum output value
*/
- inline void normalizeGrayOutputCentredSigmoide(const type meanValue=(type)0.0, const type sensitivity=(type)2.0, const type maxOutputValue=(type)255.0){normalizeGrayOutputCentredSigmoide(meanValue, sensitivity, 255.0, this->Buffer(), this->Buffer(), this->getNBpixels());};
+ inline void normalizeGrayOutputCentredSigmoide(const type meanValue=(type)0.0, const type sensitivity=(type)2.0, const type maxOutputValue=(type)255.0){ (void)maxOutputValue; normalizeGrayOutputCentredSigmoide(meanValue, sensitivity, 255.0, this->Buffer(), this->Buffer(), this->getNBpixels());};
/**
* sigmoide image normalization function (saturates min and max values), in this function, the sigmoide is centered on low values (high saturation of the medium and high values
file(GLOB lib_cuda "src/cuda/*.cu")
source_group("Cuda" FILES "${lib_cuda}")
- include_directories(${CUDA_INCLUDE_DIRS} "${OpenCV_SOURCE_DIR}/modules/gpu/src" "${OpenCV_SOURCE_DIR}/modules/gpu/src/cuda")
-
- set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_10,code=sm_10
- -gencode arch=compute_11,code=sm_11
- -gencode arch=compute_12,code=sm_12
- -gencode arch=compute_13,code=sm_13
- -gencode arch=compute_20,code=sm_20
- -gencode arch=compute_20,code=sm_21)
-
+ include_directories(${CUDA_INCLUDE_DIRS} "${OpenCV_SOURCE_DIR}/modules/gpu/src" "${OpenCV_SOURCE_DIR}/modules/gpu/src/cuda")
OCV_CUDA_COMPILE(cuda_objs ${lib_cuda})
-
- unset(CUDA_npp_LIBRARY CACHE)
- find_cuda_helper_libs(npp)
+
set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
else()
set(lib_cuda "")
buf = "";
if (del_space(it->second[1]) != "") buf += del_space(it->second[1]);
- while (true)
+ for(;;)
{
bool tr = ((int)buf.length() > col_d-2) ? true: false;
int pos;
if (tr)
{
pos = buf.find_first_of(' ');
- while (true)
+ for(;;)
{
if ((int)buf.find_first_of(' ', pos + 1 ) < col_d-2 &&
(int)buf.find_first_of(' ', pos + 1 ) != (int)std::string::npos)
void cv::gpu::setGlDevice(int device)\r
{\r
#ifndef HAVE_CUDA\r
+ (void)device;\r
throw_nocuda;\r
#else\r
#ifndef HAVE_OPENGL\r
+ (void)device;\r
throw_nogl;\r
#else\r
if (!glFuncTab()->isGlContextInitialized())\r
cv::GlBuffer::GlBuffer(Usage usage) : rows_(0), cols_(0), type_(0), usage_(usage)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)usage;\r
throw_nogl;\r
#else\r
impl_ = Impl::empty();\r
cv::GlBuffer::GlBuffer(int rows, int cols, int type, Usage usage) : rows_(0), cols_(0), type_(0), usage_(usage)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)rows;\r
+ (void)cols;\r
+ (void)type;\r
+ (void)usage;\r
throw_nogl;\r
#else\r
impl_ = new Impl(rows, cols, type, usage);\r
cv::GlBuffer::GlBuffer(Size size, int type, Usage usage) : rows_(0), cols_(0), type_(0), usage_(usage)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)size;\r
+ (void)type;\r
+ (void)usage;\r
throw_nogl;\r
#else\r
impl_ = new Impl(size.height, size.width, type, usage);\r
cv::GlBuffer::GlBuffer(InputArray mat_, Usage usage) : rows_(0), cols_(0), type_(0), usage_(usage)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)mat_;\r
+ (void)usage;\r
throw_nogl;\r
#else\r
int kind = mat_.kind();\r
void cv::GlBuffer::create(int rows, int cols, int type, Usage usage)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)rows;\r
+ (void)cols;\r
+ (void)type;\r
+ (void)usage;\r
throw_nogl;\r
#else\r
if (rows_ != rows || cols_ != cols || type_ != type || usage_ != usage)\r
void cv::GlBuffer::copyFrom(InputArray mat_)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)mat_;\r
throw_nogl;\r
#else\r
int kind = mat_.kind();\r
cv::GlTexture::GlTexture(int rows, int cols, int type) : rows_(0), cols_(0), type_(0)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)rows;\r
+ (void)cols;\r
+ (void)type;\r
throw_nogl;\r
#else\r
impl_ = new Impl(rows, cols, type);\r
cv::GlTexture::GlTexture(Size size, int type) : rows_(0), cols_(0), type_(0)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)size;\r
+ (void)type;\r
throw_nogl;\r
#else\r
impl_ = new Impl(size.height, size.width, type);\r
cv::GlTexture::GlTexture(InputArray mat_, bool bgra) : rows_(0), cols_(0), type_(0)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)mat_;\r
+ (void)bgra;\r
throw_nogl;\r
#else \r
int kind = mat_.kind();\r
void cv::GlTexture::create(int rows, int cols, int type)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)rows;\r
+ (void)cols;\r
+ (void)type;\r
throw_nogl;\r
#else\r
if (rows_ != rows || cols_ != cols || type_ != type)\r
void cv::GlTexture::copyFrom(InputArray mat_, bool bgra)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)mat_;\r
+ (void)bgra;\r
throw_nogl;\r
#else\r
int kind = mat_.kind();\r
void cv::GlFont::draw(const char* str, int len) const\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)str;\r
+ (void)len;\r
throw_nogl;\r
#else\r
if (base_ && len > 0)\r
Ptr<GlFont> cv::GlFont::get(const std::string& family, int height, Weight weight, Style style)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)family;\r
+ (void)height;\r
+ (void)weight;\r
+ (void)style;\r
throw_nogl;\r
return Ptr<GlFont>();\r
#else\r
void cv::render(const GlTexture& tex, Rect_<double> wndRect, Rect_<double> texRect)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)tex;\r
+ (void)wndRect;\r
+ (void)texRect;\r
throw_nogl;\r
#else\r
if (!tex.empty())\r
void cv::render(const GlArrays& arr, int mode, Scalar color)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)arr;\r
+ (void)mode;\r
+ (void)color;\r
throw_nogl;\r
#else\r
glColor3d(color[0] / 255.0, color[1] / 255.0, color[2] / 255.0);\r
void cv::render(const string& str, const Ptr<GlFont>& font, Scalar color, Point2d pos)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)str;\r
+ (void)font;\r
+ (void)color;\r
+ (void)pos;\r
throw_nogl;\r
#else\r
glPushAttrib(GL_DEPTH_BUFFER_BIT);\r
bool icvCheckGlError(const char* file, const int line, const char* func)\r
{\r
#ifndef HAVE_OPENGL\r
+ (void)file;\r
+ (void)line;\r
+ (void)func;\r
return true;\r
#else\r
GLenum err = glGetError();\r
void print_information(int right, int result);\r
};\r
\r
-CV_CountNonZeroTest::CV_CountNonZeroTest(): eps_32(1e-8), eps_64(1e-16), src(Mat()), current_type(-1) {}\r
+CV_CountNonZeroTest::CV_CountNonZeroTest(): eps_32(1e-8f), eps_64(1e-16f), src(Mat()), current_type(-1) {}\r
CV_CountNonZeroTest::~CV_CountNonZeroTest() {}\r
\r
void CV_CountNonZeroTest::generate_src_data(cv::Size size, int type)\r
void Core_EigenTest_32::run(int) { check_full(CV_32FC1); }\r
void Core_EigenTest_64::run(int) { check_full(CV_64FC1); }\r
\r
-Core_EigenTest::Core_EigenTest() : eps_val_32(1e-3), eps_vec_32(1e-2), eps_val_64(1e-4), eps_vec_64(1e-3) {}\r
+Core_EigenTest::Core_EigenTest() : eps_val_32(1e-3f), eps_vec_32(1e-2f), eps_val_64(1e-4f), eps_vec_64(1e-3f) {}\r
Core_EigenTest::~Core_EigenTest() {}\r
\r
bool Core_EigenTest::check_pair_count(const cv::Mat& src, const cv::Mat& evalues, int low_index, int high_index)\r
const int MATRIX_COUNT = 500;\r
const int MAX_DEGREE = 7;\r
\r
- srand(time(0));\r
+ srand((unsigned int)time(0));\r
\r
for (int i = 1; i <= MATRIX_COUNT; ++i)\r
{\r
{
cornerpos[ncorners++] = j+k;
if(nonmax_suppression)
- curr[j+k] = cornerScore(ptr+k, pixel, threshold);
+ curr[j+k] = (uchar)cornerScore(ptr+k, pixel, threshold);
}
}
#endif
{
cornerpos[ncorners++] = j;
if(nonmax_suppression)
- curr[j] = cornerScore(ptr, pixel, threshold);
+ curr[j] = (uchar)cornerScore(ptr, pixel, threshold);
break;
}
}
{
cornerpos[ncorners++] = j;
if(nonmax_suppression)
- curr[j] = cornerScore(ptr, pixel, threshold);
+ curr[j] = (uchar)cornerScore(ptr, pixel, threshold);
break;
}
}
* @param scale the scale at which we compute the orientation
* @param keypoints the resulting keypoints
*/
-void ORB::computeOrientation(const Mat& image, const Mat&, unsigned int scale,
+void ORB::computeOrientation(const Mat& image, const Mat&, unsigned int /*scale*/,
vector<KeyPoint>& keypoints) const
{
int half_patch_size = params_.patch_size_/2;
* @param keypoints the keypoints to use
* @param descriptors the resulting descriptors
*/
-void ORB::computeDescriptors(const Mat& image, const Mat& integral_image, unsigned int,
+void ORB::computeDescriptors(const Mat& image, const Mat& /*integral_image*/, unsigned int,
vector<KeyPoint>& keypoints, Mat& descriptors) const
{
//convert to grayscale if more than one color
dists_ptr = dists[0];
}
- RadiusUniqueResultSet<DistanceType> resultSet(radius);
+ RadiusUniqueResultSet<DistanceType> resultSet((DistanceType)radius);
resultSet.clear();
findNeighbors(resultSet, query[0], params);
if (n>0) {
GpuMat pattern_;\r
\r
std::vector<GpuMat> imagePyr_;\r
- std::vector<GpuMat> maskPyr_;\r
+ cv::Ptr<std::vector<GpuMat>> maskPyr_;\r
\r
GpuMat buf_;\r
\r
\r
if (!m.empty())\r
{\r
- for(int j = 0; j < m.size(); j++)\r
+ for(size_t j = 0; j < m.size(); j++)\r
{\r
float dx = p.x - m[j].x;\r
float dy = p.y - m[j].y;\r
CV_Assert(mask.empty() || (mask.type() == CV_8UC1 && mask.size() == image.size()));\r
\r
imagePyr_.resize(params_.n_levels_);\r
- maskPyr_.resize(params_.n_levels_);\r
+ maskPyr_->resize(params_.n_levels_);\r
\r
for (int level = 0; level < static_cast<int>(params_.n_levels_); ++level)\r
{\r
Size sz(cvRound(image.cols * scale), cvRound(image.rows * scale));\r
\r
ensureSizeIsEnough(sz, image.type(), imagePyr_[level]);\r
- ensureSizeIsEnough(sz, CV_8UC1, maskPyr_[level]);\r
- maskPyr_[level].setTo(Scalar::all(255));\r
+ ensureSizeIsEnough(sz, CV_8UC1, (*maskPyr_)[level]);\r
+ (*maskPyr_)[level].setTo(Scalar::all(255));\r
\r
// Compute the resized image\r
if (level != static_cast<int>(params_.first_level_))\r
image.copyTo(imagePyr_[level]);\r
\r
if (!mask.empty())\r
- mask.copyTo(maskPyr_[level]);\r
+ mask.copyTo((*maskPyr_)[level]);\r
}\r
\r
// Filter keypoints by image border\r
Rect inner(params_.edge_threshold_, params_.edge_threshold_, sz.width - 2 * params_.edge_threshold_, sz.height - 2 * params_.edge_threshold_);\r
buf_(inner).setTo(Scalar::all(255));\r
\r
- bitwise_and(maskPyr_[level], buf_, maskPyr_[level]);\r
+ bitwise_and((*maskPyr_)[level], buf_, (*maskPyr_)[level]);\r
}\r
}\r
\r
\r
for (int level = 0; level < static_cast<int>(params_.n_levels_); ++level)\r
{\r
- keyPointsCount_[level] = fastDetector_.calcKeyPointsLocation(imagePyr_[level], maskPyr_[level]);\r
+ keyPointsCount_[level] = fastDetector_.calcKeyPointsLocation(imagePyr_[level], (*maskPyr_)[level]);\r
\r
ensureSizeIsEnough(3, keyPointsCount_[level], CV_32FC1, keyPointsPyr_[level]);\r
\r
void cv::gpu::ORB_GPU::release()\r
{\r
imagePyr_.clear();\r
- maskPyr_.clear();\r
+ maskPyr_->clear();\r
\r
buf_.release();\r
\r
cv::DMatch match = matches[i];\r
int shift = isMaskSupported ? 1 : 0;\r
{\r
- if (i < queryDescCount / 2)\r
+ if ((int)i < queryDescCount / 2)\r
{\r
if ((match.queryIdx != (int)i) || (match.trainIdx != (int)i * countFactor + shift) || (match.imgIdx != 0))\r
badCount++;\r
{\r
cv::DMatch match = matches[i][k];\r
{\r
- if (i < queryDescCount / 2)\r
+ if ((int)i < queryDescCount / 2)\r
{\r
if ((match.queryIdx != (int)i) || (match.trainIdx != (int)i * countFactor + k + shift) || (match.imgIdx != 0) )\r
localBadCount++;\r
{\r
cv::DMatch match = matches[i][k];\r
{\r
- if (i < queryDescCount / 2)\r
+ if ((int)i < queryDescCount / 2)\r
{\r
if ((match.queryIdx != (int)i) || (match.trainIdx != (int)i * countFactor + k + shift) || (match.imgIdx != 0) )\r
localBadCount++;\r
{\r
cv::DMatch match = matches[i][k];\r
{\r
- if (i < queryDescCount / 2)\r
+ if ((int)i < queryDescCount / 2)\r
{\r
if ((match.queryIdx != (int)i) || (match.trainIdx != (int)i * countFactor + k + shift) || (match.imgIdx != 0) )\r
localBadCount++;\r
res = baseline;
break;
case CV_CAP_PROP_OPENNI_FOCAL_LENGTH :
- res = depthFocalLength_VGA;
+ res = (double)depthFocalLength_VGA;
break;
case CV_CAP_PROP_OPENNI_REGISTRATION :
res = depthGenerator.GetAlternativeViewPointCap().IsViewPointAs(imageGenerator) ? 1.0 : 0.0;
// CV_Assert( sizeof(unsigned short) == sizeof(XnDepthPixel) );
memcpy( depthMap.data, pDepthMap, cols*rows*sizeof(XnDepthPixel) );
- cv::Mat badMask = (depthMap == noSampleValue) | (depthMap == shadowValue) | (depthMap == 0);
+ cv::Mat badMask = (depthMap == (double)noSampleValue) | (depthMap == (double)shadowValue) | (depthMap == 0);
// mask the pixels with invalid depth
depthMap.setTo( cv::Scalar::all( CvCapture_OpenNI::INVALID_PIXEL_VAL ), badMask );
for( int x = 0; x < cols; x++ )
{
int ind = y*cols+x;
- proj[ind].X = x;
- proj[ind].Y = y;
+ proj[ind].X = (float)x;
+ proj[ind].Y = (float)y;
proj[ind].Z = depth.at<unsigned short>(y, x);
}
}
// disparity = baseline * F / z;
- float mult = baseline /*mm*/ * F /*pixels*/;
+ float mult = (float)(baseline /*mm*/ * F /*pixels*/);
disp.create( depth.size(), CV_32FC1);
disp = cv::Scalar::all( CvCapture_OpenNI::INVALID_PIXEL_VAL );
{
#ifndef HAVE_OPENGL
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
+ (void)winname;
+ (void)camera;
+ (void)arr;
#else
namedWindow(winname, WINDOW_OPENGL);
void cv::pointCloudShow(const std::string& winname, const cv::GlCamera& camera, InputArray points, InputArray colors)
{
#ifndef HAVE_OPENGL
+ (void)winname;
+ (void)camera;
+ (void)points;
+ (void)colors;
CV_Error(CV_OpenGlNotSupported, "The library is compiled without OpenGL support");
#else
namedWindow(winname, WINDOW_OPENGL);
__END__;
#endif
+ (void)name;
return result;
}
\r
Mat kernel(kSize, kSize, CV_32FC1);\r
randu(kernel, -3, 10);\r
- float s = fabs( sum(kernel)[0] );\r
+ float s = (float)fabs( sum(kernel)[0] );\r
if(s > 1e-3) kernel /= s;\r
\r
declare.in(src, WARMUP_RNG).out(dst).time(20);\r
if( ksize.width > 0 )
xmax = ksize.width/2;
else
- xmax = std::max(fabs(nstds*sigma_x*c), fabs(nstds*sigma_y*s));
+ xmax = (int)std::max(fabs(nstds*sigma_x*c), fabs(nstds*sigma_y*s));
if( ksize.height > 0 )
ymax = ksize.height/2;
else
- ymax = std::max(fabs(nstds*sigma_x*s), fabs(nstds*sigma_y*c));
+ ymax = (int)std::max(fabs(nstds*sigma_x*s), fabs(nstds*sigma_y*c));
xmin = -xmax;
ymin = -ymax;
(0.0 > t) || (t > 1.0) )
code = '0';
- p.x = a.x + s * ( b.x - a.x );
- p.y = a.y + s * ( b.y - a.y );
+ p.x = (float)(a.x + s * ( b.x - a.x ));
+ p.y = (float)(a.y + s * ( b.y - a.y ));
return code;
}
_p12.release();
return 0.f;
}
- area = contourArea(_InputArray(result, nr), false);
+ area = (float)contourArea(_InputArray(result, nr), false);
}
if( _p12.needed() )
{
int row0 = min(cvRound(range.begin() * src.rows / nStripes), src.rows);
int row1 = min(cvRound(range.end() * src.rows / nStripes), src.rows);
-
- if(0)
- printf("Size = (%d, %d), range[%d,%d), row0 = %d, row1 = %d\n",
- src.rows, src.cols, range.begin(), range.end(), row0, row1);
+
+ //printf("Size = (%d, %d), range[%d,%d), row0 = %d, row1 = %d\n", src.rows, src.cols, range.begin(), range.end(), row0, row1);
Mat srcStripe = src.rowRange(row0, row1);
Mat dstStripe = dst.rowRange(row0, row1);
int rowBorderType;
int columnBorderType;
const Scalar& borderValue;
+
+ MorphologyRunner(const MorphologyRunner&);
+ MorphologyRunner& operator=(const MorphologyRunner&);
};
static void morphOp( int op, InputArray _src, OutputArray _dst,
{
int row0 = std::min(cvRound(range.begin() * src.rows / nStripes), src.rows);
int row1 = std::min(cvRound(range.end() * src.rows / nStripes), src.rows);
-
- if(0)
- printf("Size = (%d, %d), range[%d,%d), row0 = %d, row1 = %d\n",
- src.rows, src.cols, range.begin(), range.end(), row0, row1);
+
+ //printf("Size = (%d, %d), range[%d,%d), row0 = %d, row1 = %d\n", src.rows, src.cols, range.begin(), range.end(), row0, row1);
Mat srcStripe = src.rowRange(row0, row1);
Mat dstStripe = dst.rowRange(row0, row1);
} while(0);\r
#else\r
#include <iostream>\r
- #define LOG_STITCHING_MSG(msg) do { std::cout << msg; std::cout.flush(); } while(0);\r
+ #define LOG_STITCHING_MSG(msg) for(;;) { std::cout << msg; std::cout.flush(); break; }\r
#endif\r
#else\r
#define LOG_STITCHING_MSG(msg)\r
#endif\r
\r
#define LOG_(_level, _msg) \\r
- do { \\r
- if ((_level) >= ::cv::detail::stitchingLogLevel()) { \\r
+ for(;;) \\r
+ { \\r
+ if ((_level) >= ::cv::detail::stitchingLogLevel()) \\r
+ { \\r
LOG_STITCHING_MSG(_msg); \\r
} \\r
- } while(0)\r
+ break; \\r
+ } \r
\r
\r
#define LOG(msg) LOG_(1, msg)\r
{\r
Mat img1, img1_full = imread( getDataPath("stitching/b1.jpg") );\r
Mat img2, img2_full = imread( getDataPath("stitching/b2.jpg") );\r
- float scale1 = std::min(1.0, sqrt(WORK_MEGAPIX * 1e6 / img1_full.total()));\r
- float scale2 = std::min(1.0, sqrt(WORK_MEGAPIX * 1e6 / img2_full.total()));\r
+ float scale1 = (float)std::min(1.0, sqrt(WORK_MEGAPIX * 1e6 / img1_full.total()));\r
+ float scale2 = (float)std::min(1.0, sqrt(WORK_MEGAPIX * 1e6 / img2_full.total()));\r
resize(img1_full, img1, Size(), scale1, scale1);\r
resize(img2_full, img2, Size(), scale2, scale2);\r
\r
Impl(int cost_type, float terminal_cost, float bad_region_penalty)\r
: cost_type_(cost_type), terminal_cost_(terminal_cost), bad_region_penalty_(bad_region_penalty) {}\r
\r
+ ~Impl() {}\r
+\r
void find(const vector<Mat> &src, const vector<Point> &corners, vector<Mat> &masks);\r
void findInPair(size_t first, size_t second, Rect roi);\r
\r
if (n > 0)\r
test->p_tbb_initializer=new tbb::task_scheduler_init(n);\r
#endif\r
+ (void)n;\r
return *this;\r
}\r
\r