Merge pull request #3764 from jet47:runtime-disable-optimizations
This commit is contained in:
commit
f3f2f8ba97
@ -69,7 +69,7 @@ void drawPoints(const std::vector<Point2f> &points, Mat &outImage, int radius =
|
||||
void CirclesGridClusterFinder::hierarchicalClustering(const std::vector<Point2f> &points, const Size &patternSz, std::vector<Point2f> &patternPoints)
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::hierarchicalClustering(points, patternSz, patternPoints))
|
||||
if(tegra::useTegra() && tegra::hierarchicalClustering(points, patternSz, patternPoints))
|
||||
return;
|
||||
#endif
|
||||
int j, n = (int)points.size();
|
||||
|
@ -269,6 +269,15 @@ typedef enum CvStatus
|
||||
}
|
||||
CvStatus;
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
namespace tegra {
|
||||
|
||||
CV_EXPORTS bool useTegra();
|
||||
CV_EXPORTS void setUseTegra(bool flag);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//! @endcond
|
||||
|
||||
#endif // __OPENCV_CORE_PRIVATE_HPP__
|
||||
|
@ -2256,51 +2256,54 @@ void cv::subtract( InputArray _src1, InputArray _src2, OutputArray _dst,
|
||||
InputArray mask, int dtype )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
int kind1 = _src1.kind(), kind2 = _src2.kind();
|
||||
Mat src1 = _src1.getMat(), src2 = _src2.getMat();
|
||||
bool src1Scalar = checkScalar(src1, _src2.type(), kind1, kind2);
|
||||
bool src2Scalar = checkScalar(src2, _src1.type(), kind2, kind1);
|
||||
|
||||
if (!src1Scalar && !src2Scalar &&
|
||||
src1.depth() == CV_8U && src2.type() == src1.type() &&
|
||||
src1.dims == 2 && src2.size() == src1.size() &&
|
||||
mask.empty())
|
||||
if (tegra::useTegra())
|
||||
{
|
||||
if (dtype < 0)
|
||||
int kind1 = _src1.kind(), kind2 = _src2.kind();
|
||||
Mat src1 = _src1.getMat(), src2 = _src2.getMat();
|
||||
bool src1Scalar = checkScalar(src1, _src2.type(), kind1, kind2);
|
||||
bool src2Scalar = checkScalar(src2, _src1.type(), kind2, kind1);
|
||||
|
||||
if (!src1Scalar && !src2Scalar &&
|
||||
src1.depth() == CV_8U && src2.type() == src1.type() &&
|
||||
src1.dims == 2 && src2.size() == src1.size() &&
|
||||
mask.empty())
|
||||
{
|
||||
if (_dst.fixedType())
|
||||
if (dtype < 0)
|
||||
{
|
||||
dtype = _dst.depth();
|
||||
if (_dst.fixedType())
|
||||
{
|
||||
dtype = _dst.depth();
|
||||
}
|
||||
else
|
||||
{
|
||||
dtype = src1.depth();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dtype = src1.depth();
|
||||
}
|
||||
}
|
||||
|
||||
dtype = CV_MAT_DEPTH(dtype);
|
||||
dtype = CV_MAT_DEPTH(dtype);
|
||||
|
||||
if (!_dst.fixedType() || dtype == _dst.depth())
|
||||
{
|
||||
_dst.create(src1.size(), CV_MAKE_TYPE(dtype, src1.channels()));
|
||||
if (!_dst.fixedType() || dtype == _dst.depth())
|
||||
{
|
||||
_dst.create(src1.size(), CV_MAKE_TYPE(dtype, src1.channels()));
|
||||
|
||||
if (dtype == CV_16S)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u16s(src1, src2, dst))
|
||||
return;
|
||||
}
|
||||
else if (dtype == CV_32F)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u32f(src1, src2, dst))
|
||||
return;
|
||||
}
|
||||
else if (dtype == CV_8S)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u8s(src1, src2, dst))
|
||||
return;
|
||||
if (dtype == CV_16S)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u16s(src1, src2, dst))
|
||||
return;
|
||||
}
|
||||
else if (dtype == CV_32F)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u32f(src1, src2, dst))
|
||||
return;
|
||||
}
|
||||
else if (dtype == CV_8S)
|
||||
{
|
||||
Mat dst = _dst.getMat();
|
||||
if(tegra::subtract_8u8u8s(src1, src2, dst))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ static void FastAtan2_32f(const float *Y, const float *X, float *angle, int len,
|
||||
float scale = angleInDegrees ? 1 : (float)(CV_PI/180);
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::FastAtan2_32f(Y, X, angle, len, scale))
|
||||
if (tegra::useTegra() && tegra::FastAtan2_32f(Y, X, angle, len, scale))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -236,6 +236,9 @@ struct CoreTLSData
|
||||
{
|
||||
CoreTLSData() : device(0), useOpenCL(-1), useIPP(-1), useCollection(false)
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
useTegra = -1;
|
||||
#endif
|
||||
#ifdef CV_COLLECT_IMPL_DATA
|
||||
implFlags = 0;
|
||||
#endif
|
||||
@ -246,6 +249,9 @@ struct CoreTLSData
|
||||
ocl::Queue oclQueue;
|
||||
int useOpenCL; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||
int useIPP; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
int useTegra; // 1 - use, 0 - do not use, -1 - auto/not initialized
|
||||
#endif
|
||||
bool useCollection; // enable/disable impl data collection
|
||||
|
||||
#ifdef CV_COLLECT_IMPL_DATA
|
||||
|
@ -385,6 +385,12 @@ void setUseOptimized( bool flag )
|
||||
useOptimizedFlag = flag;
|
||||
currentFeatures = flag ? &featuresEnabled : &featuresDisabled;
|
||||
USE_SSE2 = currentFeatures->have[CV_CPU_SSE2];
|
||||
|
||||
ipp::setUseIPP(flag);
|
||||
ocl::setUseOpenCL(flag);
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
::tegra::setUseTegra(flag);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool useOptimized(void)
|
||||
@ -1259,4 +1265,34 @@ void setUseIPP(bool flag)
|
||||
|
||||
} // namespace cv
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
|
||||
namespace tegra {
|
||||
|
||||
bool useTegra()
|
||||
{
|
||||
cv::CoreTLSData* data = cv::getCoreTlsData().get();
|
||||
|
||||
if (data->useTegra < 0)
|
||||
{
|
||||
const char* pTegraEnv = getenv("OPENCV_TEGRA");
|
||||
if (pTegraEnv && (cv::String(pTegraEnv) == "disabled"))
|
||||
data->useTegra = false;
|
||||
else
|
||||
data->useTegra = true;
|
||||
}
|
||||
|
||||
return (data->useTegra > 0);
|
||||
}
|
||||
|
||||
void setUseTegra(bool flag)
|
||||
{
|
||||
cv::CoreTLSData* data = cv::getCoreTlsData().get();
|
||||
data->useTegra = flag;
|
||||
}
|
||||
|
||||
} // namespace tegra
|
||||
|
||||
#endif
|
||||
|
||||
/* End of file. */
|
||||
|
@ -7,14 +7,4 @@
|
||||
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#ifndef HAVE_CUDA
|
||||
|
||||
CV_TEST_MAIN("cv")
|
||||
|
||||
#else
|
||||
|
||||
#include "opencv2/ts/cuda_test.hpp"
|
||||
|
||||
CV_CUDA_TEST_MAIN("cv")
|
||||
|
||||
#endif
|
||||
|
@ -40,7 +40,7 @@
|
||||
//
|
||||
//M*/
|
||||
|
||||
#include "../test_precomp.hpp"
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#ifdef HAVE_CUDA
|
||||
|
@ -40,7 +40,7 @@
|
||||
//
|
||||
//M*/
|
||||
|
||||
#include "../test_precomp.hpp"
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#ifdef HAVE_CUDA
|
||||
|
@ -40,7 +40,7 @@
|
||||
//
|
||||
//M*/
|
||||
|
||||
#include "../test_precomp.hpp"
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#if defined(HAVE_CUDA) && defined(HAVE_OPENGL)
|
||||
|
@ -40,7 +40,7 @@
|
||||
//
|
||||
//M*/
|
||||
|
||||
#include "../test_precomp.hpp"
|
||||
#include "test_precomp.hpp"
|
||||
|
||||
#ifdef HAVE_CUDA
|
||||
|
@ -346,7 +346,7 @@ void FAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool
|
||||
break;
|
||||
case FastFeatureDetector::TYPE_9_16:
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::FAST(_img, keypoints, threshold, nonmax_suppression))
|
||||
if(tegra::useTegra() && tegra::FAST(_img, keypoints, threshold, nonmax_suppression))
|
||||
break;
|
||||
#endif
|
||||
FAST_t<16>(_img, keypoints, threshold, nonmax_suppression);
|
||||
|
@ -261,7 +261,7 @@ void cv::Canny( InputArray _src, OutputArray _dst,
|
||||
Mat src = _src.getMat(), dst = _dst.getMat();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::canny(src, dst, low_thresh, high_thresh, aperture_size, L2gradient))
|
||||
if (tegra::useTegra() && tegra::canny(src, dst, low_thresh, high_thresh, aperture_size, L2gradient))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -6128,7 +6128,7 @@ struct YUV420sp2RGB888Invoker : ParallelLoopBody
|
||||
const uchar* y1 = my1 + rangeBegin * stride, *uv = muv + rangeBegin * stride / 2;
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::cvtYUV4202RGB(bIdx, uIdx, 3, y1, uv, stride, dst->ptr<uchar>(rangeBegin), dst->step, rangeEnd - rangeBegin, dst->cols))
|
||||
if(tegra::useTegra() && tegra::cvtYUV4202RGB(bIdx, uIdx, 3, y1, uv, stride, dst->ptr<uchar>(rangeBegin), dst->step, rangeEnd - rangeBegin, dst->cols))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -6197,7 +6197,7 @@ struct YUV420sp2RGBA8888Invoker : ParallelLoopBody
|
||||
const uchar* y1 = my1 + rangeBegin * stride, *uv = muv + rangeBegin * stride / 2;
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::cvtYUV4202RGB(bIdx, uIdx, 4, y1, uv, stride, dst->ptr<uchar>(rangeBegin), dst->step, rangeEnd - rangeBegin, dst->cols))
|
||||
if(tegra::useTegra() && tegra::cvtYUV4202RGB(bIdx, uIdx, 4, y1, uv, stride, dst->ptr<uchar>(rangeBegin), dst->step, rangeEnd - rangeBegin, dst->cols))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -7418,9 +7418,10 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
if( depth == CV_8U )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(!tegra::cvtBGR2RGB(src, dst, bidx))
|
||||
if(tegra::useTegra() && tegra::cvtBGR2RGB(src, dst, bidx))
|
||||
break;
|
||||
#endif
|
||||
CvtColorLoop(src, dst, RGB2RGB<uchar>(scn, dcn, bidx));
|
||||
CvtColorLoop(src, dst, RGB2RGB<uchar>(scn, dcn, bidx));
|
||||
}
|
||||
else if( depth == CV_16U )
|
||||
CvtColorLoop(src, dst, RGB2RGB<ushort>(scn, dcn, bidx));
|
||||
@ -7485,7 +7486,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(code == CV_BGR2BGR565 || code == CV_BGRA2BGR565 || code == CV_RGB2BGR565 || code == CV_RGBA2BGR565)
|
||||
if(tegra::cvtRGB2RGB565(src, dst, code == CV_RGB2BGR565 || code == CV_RGBA2BGR565 ? 0 : 2))
|
||||
if(tegra::useTegra() && tegra::cvtRGB2RGB565(src, dst, code == CV_RGB2BGR565 || code == CV_RGBA2BGR565 ? 0 : 2))
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -7611,7 +7612,8 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
if( depth == CV_8U )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(!tegra::cvtRGB2Gray(src, dst, bidx))
|
||||
if(tegra::useTegra() && tegra::cvtRGB2Gray(src, dst, bidx))
|
||||
break;
|
||||
#endif
|
||||
CvtColorLoop(src, dst, RGB2Gray<uchar>(scn, bidx, 0));
|
||||
}
|
||||
@ -7663,7 +7665,8 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
if( depth == CV_8U )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(!tegra::cvtGray2RGB(src, dst))
|
||||
if(tegra::useTegra() && tegra::cvtGray2RGB(src, dst))
|
||||
break;
|
||||
#endif
|
||||
CvtColorLoop(src, dst, Gray2RGB<uchar>(dcn));
|
||||
}
|
||||
@ -7742,7 +7745,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
if( depth == CV_8U )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if((code == CV_RGB2YCrCb || code == CV_BGR2YCrCb) && tegra::cvtRGB2YCrCb(src, dst, bidx))
|
||||
if((code == CV_RGB2YCrCb || code == CV_BGR2YCrCb) && tegra::useTegra() && tegra::cvtRGB2YCrCb(src, dst, bidx))
|
||||
break;
|
||||
#endif
|
||||
CvtColorLoop(src, dst, RGB2YCrCb_i<uchar>(scn, bidx, coeffs_i));
|
||||
@ -8036,7 +8039,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn )
|
||||
code == CV_BGR2HSV_FULL || code == CV_RGB2HSV_FULL )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::cvtRGB2HSV(src, dst, bidx, hrange))
|
||||
if(tegra::useTegra() && tegra::cvtRGB2HSV(src, dst, bidx, hrange))
|
||||
break;
|
||||
#endif
|
||||
if( depth == CV_8U )
|
||||
|
@ -269,7 +269,7 @@ cornerEigenValsVecs( const Mat& src, Mat& eigenv, int block_size,
|
||||
int borderType=BORDER_DEFAULT )
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::cornerEigenValsVecs(src, eigenv, block_size, aperture_size, op_type, k, borderType))
|
||||
if (tegra::useTegra() && tegra::cornerEigenValsVecs(src, eigenv, block_size, aperture_size, op_type, k, borderType))
|
||||
return;
|
||||
#endif
|
||||
#if CV_SSE2
|
||||
|
@ -562,7 +562,7 @@ void cv::Sobel( InputArray _src, OutputArray _dst, int ddepth, int dx, int dy,
|
||||
_dst.create( _src.size(), dtype );
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (scale == 1.0 && delta == 0)
|
||||
if (tegra::useTegra() && scale == 1.0 && delta == 0)
|
||||
{
|
||||
Mat src = _src.getMat(), dst = _dst.getMat();
|
||||
if (ksize == 3 && tegra::sobel3x3(src, dst, dx, dy, borderType))
|
||||
@ -620,7 +620,7 @@ void cv::Scharr( InputArray _src, OutputArray _dst, int ddepth, int dx, int dy,
|
||||
_dst.create( _src.size(), dtype );
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (scale == 1.0 && delta == 0)
|
||||
if (tegra::useTegra() && scale == 1.0 && delta == 0)
|
||||
{
|
||||
Mat src = _src.getMat(), dst = _dst.getMat();
|
||||
if (tegra::scharr(src, dst, dx, dy, borderType))
|
||||
@ -873,7 +873,7 @@ void cv::Laplacian( InputArray _src, OutputArray _dst, int ddepth, int ksize,
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (scale == 1.0 && delta == 0)
|
||||
if (tegra::useTegra() && scale == 1.0 && delta == 0)
|
||||
{
|
||||
Mat src = _src.getMat(), dst = _dst.getMat();
|
||||
if (ksize == 1 && tegra::laplace1(src, dst, borderType))
|
||||
|
@ -4659,7 +4659,7 @@ void cv::filter2D( InputArray _src, OutputArray _dst, int ddepth,
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if( tegra::filter2D(src, dst, kernel, anchor, delta, borderType) )
|
||||
if( tegra::useTegra() && tegra::filter2D(src, dst, kernel, anchor, delta, borderType) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -3227,7 +3227,7 @@ void cv::resize( InputArray _src, OutputArray _dst, Size dsize,
|
||||
Mat dst = _dst.getMat();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::resize(src, dst, (float)inv_scale_x, (float)inv_scale_y, interpolation))
|
||||
if (tegra::useTegra() && tegra::resize(src, dst, (float)inv_scale_x, (float)inv_scale_y, interpolation))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -5572,7 +5572,7 @@ void cv::warpAffine( InputArray _src, OutputArray _dst,
|
||||
M0.convertTo(matM, matM.type());
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if( tegra::warpAffine(src, dst, M, flags, borderType, borderValue) )
|
||||
if( tegra::useTegra() && tegra::warpAffine(src, dst, M, flags, borderType, borderValue) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -6098,7 +6098,7 @@ void cv::warpPerspective( InputArray _src, OutputArray _dst, InputArray _M0,
|
||||
M0.convertTo(matM, matM.type());
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if( tegra::warpPerspective(src, dst, M, flags, borderType, borderValue) )
|
||||
if( tegra::useTegra() && tegra::warpPerspective(src, dst, M, flags, borderType, borderValue) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -1180,7 +1180,7 @@ void cv::pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borde
|
||||
int depth = src.depth();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(borderType == BORDER_DEFAULT && tegra::pyrDown(src, dst))
|
||||
if(borderType == BORDER_DEFAULT && tegra::useTegra() && tegra::pyrDown(src, dst))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -1257,7 +1257,7 @@ void cv::pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int borderT
|
||||
int depth = src.depth();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(borderType == BORDER_DEFAULT && tegra::pyrUp(src, dst))
|
||||
if(borderType == BORDER_DEFAULT && tegra::useTegra() && tegra::pyrUp(src, dst))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -1324,7 +1324,7 @@ void cv::boxFilter( InputArray _src, OutputArray _dst, int ddepth,
|
||||
ksize.width = 1;
|
||||
}
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if ( tegra::box(src, dst, ksize, anchor, normalize, borderType) )
|
||||
if ( tegra::useTegra() && tegra::box(src, dst, ksize, anchor, normalize, borderType) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -1650,7 +1650,7 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize,
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
Mat src = _src.getMat();
|
||||
Mat dst = _dst.getMat();
|
||||
if(sigma1 == 0 && sigma2 == 0 && tegra::gaussian(src, dst, ksize, borderType))
|
||||
if(sigma1 == 0 && sigma2 == 0 && tegra::useTegra() && tegra::gaussian(src, dst, ksize, borderType))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -2698,7 +2698,7 @@ void cv::medianBlur( InputArray _src0, OutputArray _dst, int ksize )
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::medianBlur(src0, dst, ksize))
|
||||
if (tegra::useTegra() && tegra::medianBlur(src0, dst, ksize))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -933,7 +933,7 @@ void cv::matchTemplate( InputArray _img, InputArray _templ, OutputArray _result,
|
||||
Mat result = _result.getMat();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::matchTemplate(img, templ, result, method))
|
||||
if (tegra::useTegra() && tegra::matchTemplate(img, templ, result, method))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -64,7 +64,7 @@ thresh_8u( const Mat& _src, Mat& _dst, uchar thresh, uchar maxval, int type )
|
||||
}
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::thresh_8u(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
if (tegra::useTegra() && tegra::thresh_8u(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -408,7 +408,7 @@ thresh_16s( const Mat& _src, Mat& _dst, short thresh, short maxval, int type )
|
||||
}
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::thresh_16s(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
if (tegra::useTegra() && tegra::thresh_16s(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -676,7 +676,7 @@ thresh_32f( const Mat& _src, Mat& _dst, float thresh, float maxval, int type )
|
||||
}
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::thresh_32f(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
if (tegra::useTegra() && tegra::thresh_32f(_src, _dst, roi.width, roi.height, thresh, maxval, type))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -937,10 +937,10 @@ Ptr<CascadeClassifierImpl::MaskGenerator> CascadeClassifierImpl::getMaskGenerato
|
||||
Ptr<BaseCascadeClassifier::MaskGenerator> createFaceDetectionMaskGenerator()
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
return tegra::getCascadeClassifierMaskGenerator();
|
||||
#else
|
||||
return Ptr<BaseCascadeClassifier::MaskGenerator>();
|
||||
if (tegra::useTegra())
|
||||
return tegra::getCascadeClassifierMaskGenerator();
|
||||
#endif
|
||||
return Ptr<BaseCascadeClassifier::MaskGenerator>();
|
||||
}
|
||||
|
||||
class CascadeClassifierInvoker : public ParallelLoopBody
|
||||
|
@ -58,7 +58,7 @@ void cv::fastNlMeansDenoising( InputArray _src, OutputArray _dst, float h,
|
||||
Mat dst = _dst.getMat();
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if(tegra::fastNlMeansDenoising(src, dst, h, templateWindowSize, searchWindowSize))
|
||||
if(tegra::useTegra() && tegra::fastNlMeansDenoising(src, dst, h, templateWindowSize, searchWindowSize))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -481,7 +481,7 @@ void normalizeUsingWeightMap(InputArray _weight, InputOutputArray _src)
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
src = _src.getMat();
|
||||
weight = _weight.getMat();
|
||||
if(tegra::normalizeUsingWeightMap(weight, src))
|
||||
if(tegra::useTegra() && tegra::normalizeUsingWeightMap(weight, src))
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -552,7 +552,7 @@ void createLaplacePyr(InputArray img, int num_levels, std::vector<UMat> &pyr)
|
||||
{
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
cv::Mat imgMat = img.getMat();
|
||||
if(tegra::createLaplacePyr(imgMat, num_levels, pyr))
|
||||
if(tegra::useTegra() && tegra::createLaplacePyr(imgMat, num_levels, pyr))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -148,7 +148,7 @@ void CpuMatcher::match(const ImageFeatures &features1, const ImageFeatures &feat
|
||||
CV_Assert(features2.descriptors.depth() == CV_8U || features2.descriptors.depth() == CV_32F);
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::match2nearest(features1, features2, matches_info, match_conf_))
|
||||
if (tegra::useTegra() && tegra::match2nearest(features1, features2, matches_info, match_conf_))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
@ -352,7 +352,7 @@ namespace cv { namespace cuda
|
||||
#ifdef HAVE_CUDA
|
||||
|
||||
#define CV_CUDA_TEST_MAIN(resourcesubdir) \
|
||||
CV_TEST_MAIN(resourcesubdir, cvtest::parseCudaDeviceOptions(argc, argv), cvtest::printCudaInfo())
|
||||
CV_TEST_MAIN(resourcesubdir, cvtest::parseCudaDeviceOptions(argc, argv), cvtest::printCudaInfo(), cv::setUseOptimized(false))
|
||||
|
||||
#else // HAVE_CUDA
|
||||
|
||||
|
@ -98,6 +98,13 @@ void dumpOpenCLDevice()
|
||||
|
||||
try
|
||||
{
|
||||
if (!useOpenCL())
|
||||
{
|
||||
DUMP_MESSAGE_STDOUT("OpenCL is disabled");
|
||||
DUMP_PROPERTY_XML("cv_ocl", "disabled");
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<PlatformInfo> platforms;
|
||||
cv::ocl::getPlatfomsInfo(platforms);
|
||||
if (platforms.size() > 0)
|
||||
|
@ -3068,7 +3068,7 @@ void printVersionInfo(bool useStdOut)
|
||||
if (useStdOut) std::cout << "CPU features: " << cpu_features << std::endl;
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
const char * tegra_optimization = tegra::isDeviceSupported() ? "enabled" : "disabled";
|
||||
const char * tegra_optimization = tegra::useTegra() && tegra::isDeviceSupported() ? "enabled" : "disabled";
|
||||
::testing::Test::RecordProperty("cv_tegra_optimization", tegra_optimization);
|
||||
if (useStdOut) std::cout << "Tegra optimization: " << tegra_optimization << std::endl;
|
||||
#endif
|
||||
|
@ -58,7 +58,7 @@ static void calcSharrDeriv(const cv::Mat& src, cv::Mat& dst)
|
||||
dst.create(rows, cols, CV_MAKETYPE(DataType<deriv_type>::depth, cn*2));
|
||||
|
||||
#ifdef HAVE_TEGRA_OPTIMIZATION
|
||||
if (tegra::calcSharrDeriv(src, dst))
|
||||
if (tegra::useTegra() && tegra::calcSharrDeriv(src, dst))
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user