Merge branch '2.4'
This commit is contained in:
commit
8dbde3297e
@ -1,4 +1,4 @@
|
||||
if(MINGW)
|
||||
if(MINGW OR (X86 AND UNIX AND NOT APPLE))
|
||||
# mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O2 instead
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
foreach(flags CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
|
||||
|
@ -182,10 +182,20 @@ MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use )
|
||||
|
||||
_PCH_GET_TARGET_COMPILE_FLAGS(_target_cflags ${_name} ${_pch_output_to_use} ${_dowarn})
|
||||
#MESSAGE("Add flags ${_target_cflags} to ${_targetName} " )
|
||||
SET_TARGET_PROPERTIES(${_targetName}
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS ${_target_cflags}
|
||||
)
|
||||
|
||||
GET_TARGET_PROPERTY(_sources ${_targetName} SOURCES)
|
||||
FOREACH(src ${_sources})
|
||||
if(NOT "${src}" MATCHES "\\.mm$")
|
||||
get_source_file_property(_flags "${src}" COMPILE_FLAGS)
|
||||
if(_flags)
|
||||
set(_flags "${_flags} ${_target_cflags}")
|
||||
else()
|
||||
set(_flags "${_target_cflags}")
|
||||
endif()
|
||||
|
||||
set_source_files_properties("${src}" PROPERTIES COMPILE_FLAGS "${_flags}")
|
||||
endif()
|
||||
ENDFOREACH()
|
||||
|
||||
ADD_CUSTOM_TARGET(pch_Generate_${_targetName}
|
||||
DEPENDS ${_pch_output_to_use}
|
||||
|
@ -96,7 +96,7 @@ PERF_TEST(PointsNum_Algo, solveP3P)
|
||||
SANITY_CHECK(tvec, 1e-6);
|
||||
}
|
||||
|
||||
PERF_TEST_P(PointsNum, SolvePnPRansac, testing::Values(4, 3*9, 7*13))
|
||||
PERF_TEST_P(PointsNum, DISABLED_SolvePnPRansac, testing::Values(4, 3*9, 7*13))
|
||||
{
|
||||
int count = GetParam();
|
||||
|
||||
|
@ -59,6 +59,9 @@
|
||||
# ifdef ANDROID
|
||||
template <typename Scalar> Scalar log2(Scalar v) { using std::log; return log(v)/log(Scalar(2)); }
|
||||
# endif
|
||||
# if defined __GNUC__ && defined __APPLE__
|
||||
# pragma GCC diagnostic ignored "-Wshadow"
|
||||
# endif
|
||||
# include <unsupported/Eigen/MatrixFunctions>
|
||||
# include <Eigen/Dense>
|
||||
#endif
|
||||
|
@ -86,6 +86,11 @@
|
||||
|
||||
#include <limits>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable:4127) //conditional expression is constant
|
||||
#endif
|
||||
|
||||
namespace cv
|
||||
{
|
||||
|
||||
@ -3950,5 +3955,9 @@ template<typename _Tp> inline void AlgorithmInfo::addParam(Algorithm& algo, cons
|
||||
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif // __cplusplus
|
||||
#endif
|
||||
|
@ -23,6 +23,13 @@ PERF_TEST_P(Size_MatType, addWeighted, TYPICAL_MATS_ADWEIGHTED)
|
||||
|
||||
declare.in(src1, src2, dst, WARMUP_RNG).out(dst);
|
||||
|
||||
if (CV_MAT_DEPTH(type) == CV_32S)
|
||||
{
|
||||
//see ticket 1529: absdiff can be without saturation on 32S
|
||||
src1 /= 8;
|
||||
src2 /= 8;
|
||||
}
|
||||
|
||||
TEST_CYCLE() cv::addWeighted( src1, alpha, src2, beta, gamma, dst, dst.type() );
|
||||
|
||||
SANITY_CHECK(dst);
|
||||
|
@ -2543,7 +2543,6 @@ public:
|
||||
data(_data),
|
||||
centers(_centers)
|
||||
{
|
||||
CV_DbgAssert(centers.cols == data.cols);
|
||||
}
|
||||
|
||||
void operator()( const BlockedRange& range ) const
|
||||
|
@ -361,8 +361,8 @@ void cv::setNumThreads( int threads )
|
||||
else if (pplScheduler == 0 || 1 + pplScheduler->GetNumberOfVirtualProcessors() != (unsigned int)threads)
|
||||
{
|
||||
pplScheduler = Concurrency::Scheduler::Create(Concurrency::SchedulerPolicy(2,
|
||||
Concurrency::PolicyElementKey::MinConcurrency, threads-1,
|
||||
Concurrency::PolicyElementKey::MaxConcurrency, threads-1));
|
||||
Concurrency::MinConcurrency, threads-1,
|
||||
Concurrency::MaxConcurrency, threads-1));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -500,7 +500,7 @@ int runRadiusSearch_(void* index, const Mat& query, Mat& indices, Mat& dists,
|
||||
::cvflann::Matrix<DistanceType> _dists((DistanceType*)dists.data, dists.rows, dists.cols);
|
||||
|
||||
return ((IndexType*)index)->radiusSearch(_query, _indices, _dists,
|
||||
saturate_cast<DistanceType>(radius),
|
||||
saturate_cast<float>(radius),
|
||||
(const ::cvflann::SearchParams&)get_params(params));
|
||||
}
|
||||
|
||||
|
@ -503,6 +503,9 @@ bool CvCaptureCAM::setProperty(int property_id, double value) {
|
||||
didOutputVideoFrame:(CVImageBufferRef)videoFrame
|
||||
withSampleBuffer:(QTSampleBuffer *)sampleBuffer
|
||||
fromConnection:(QTCaptureConnection *)connection {
|
||||
(void)captureOutput;
|
||||
(void)sampleBuffer;
|
||||
(void)connection;
|
||||
|
||||
CVBufferRetain(videoFrame);
|
||||
CVImageBufferRef imageBufferToRelease = mCurrentImageBuffer;
|
||||
@ -519,6 +522,9 @@ bool CvCaptureCAM::setProperty(int property_id, double value) {
|
||||
- (void)captureOutput:(QTCaptureOutput *)captureOutput
|
||||
didDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBuffer
|
||||
fromConnection:(QTCaptureConnection *)connection {
|
||||
(void)captureOutput;
|
||||
(void)sampleBuffer;
|
||||
(void)connection;
|
||||
cout << "Camera dropped frame!" << endl;
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,10 @@
|
||||
# pragma warning( disable: 4100 4244 4267 )
|
||||
#endif
|
||||
|
||||
#if defined __GNUC__ && defined __APPLE__
|
||||
# pragma GCC diagnostic ignored "-Wshadow"
|
||||
#endif
|
||||
|
||||
#include <ImfHeader.h>
|
||||
#include <ImfInputFile.h>
|
||||
#include <ImfOutputFile.h>
|
||||
|
@ -45,6 +45,10 @@
|
||||
|
||||
#ifdef HAVE_OPENEXR
|
||||
|
||||
#if defined __GNUC__ && defined __APPLE__
|
||||
# pragma GCC diagnostic ignored "-Wshadow"
|
||||
#endif
|
||||
|
||||
#include <ImfChromaticities.h>
|
||||
#include <ImfInputFile.h>
|
||||
#include <ImfChannelList.h>
|
||||
|
@ -136,7 +136,7 @@ static bool wasInitialized = false;
|
||||
}
|
||||
}*/
|
||||
|
||||
CV_IMPL int cvInitSystem( int argc, char** argv)
|
||||
CV_IMPL int cvInitSystem( int , char** )
|
||||
{
|
||||
//cout << "cvInitSystem" << endl;
|
||||
wasInitialized = true;
|
||||
@ -159,7 +159,7 @@ CV_IMPL int cvInitSystem( int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
CVWindow *cvGetWindow(const char *name) {
|
||||
static CVWindow *cvGetWindow(const char *name) {
|
||||
//cout << "cvGetWindow" << endl;
|
||||
NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init];
|
||||
NSString *cvname = [NSString stringWithFormat:@"%s", name];
|
||||
@ -614,6 +614,7 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value )
|
||||
@synthesize status;
|
||||
|
||||
- (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags {
|
||||
(void)event;
|
||||
//cout << "cvSendMouseEvent" << endl;
|
||||
NSPoint mp = [NSEvent mouseLocation];
|
||||
//NSRect visible = [[self contentView] frame];
|
||||
@ -924,6 +925,7 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value )
|
||||
}
|
||||
|
||||
- (void)sliderChanged:(NSNotification *)notification {
|
||||
(void)notification;
|
||||
int pos = [slider intValue];
|
||||
if(value)
|
||||
*value = pos;
|
||||
|
@ -109,6 +109,6 @@ void CV_FramecountTest::run(int)
|
||||
}
|
||||
}
|
||||
}
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined HAVE_FFMPEG
|
||||
TEST(Highgui_Video, framecount) {CV_FramecountTest test; test.safe_run();}
|
||||
#endif
|
||||
|
@ -217,7 +217,7 @@ void CV_VideoRandomPositioningTest::run(int)
|
||||
run_test(RANDOM);
|
||||
}
|
||||
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined HAVE_FFMPEG
|
||||
TEST (Highgui_Video, seek_progressive) { CV_VideoProgressivePositioningTest test; test.safe_run(); }
|
||||
TEST (Highgui_Video, seek_random) { CV_VideoRandomPositioningTest test; test.safe_run(); }
|
||||
#endif
|
@ -173,6 +173,6 @@ public:
|
||||
Size framesize;
|
||||
};
|
||||
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT && BUILD_WITH_VIDEO_OUTPUT_SUPPORT
|
||||
#if BUILD_WITH_VIDEO_INPUT_SUPPORT && BUILD_WITH_VIDEO_OUTPUT_SUPPORT && defined HAVE_FFMPEG
|
||||
TEST(Highgui_Video, seek_random_synthetic) { CV_PositioningTest test; test.safe_run(); }
|
||||
#endif
|
||||
|
@ -15,6 +15,7 @@ CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH)
|
||||
|
||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpAffine;
|
||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode> > TestWarpPerspective;
|
||||
typedef TestBaseWithParam< tr1::tuple<Size, InterType, BorderMode, MatType> > TestWarpPerspectiveNear_t;
|
||||
typedef TestBaseWithParam< tr1::tuple<MatType, Size, InterType, BorderMode, RemapMode> > TestRemap;
|
||||
|
||||
void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode );
|
||||
@ -80,44 +81,59 @@ PERF_TEST_P( TestWarpPerspective, WarpPerspective,
|
||||
SANITY_CHECK(dst);
|
||||
}
|
||||
|
||||
PERF_TEST_P( TestWarpPerspective, WarpPerspectiveLarge,
|
||||
PERF_TEST_P( TestWarpPerspectiveNear_t, WarpPerspectiveNear,
|
||||
Combine(
|
||||
Values( sz3MP, sz5MP ),
|
||||
ValuesIn( InterType::all() ),
|
||||
ValuesIn( BorderMode::all() )
|
||||
Values( Size(176,144), Size(320,240), Size(352,288), Size(480,480),
|
||||
Size(640,480), Size(704,576), Size(720,408), Size(720,480),
|
||||
Size(720,576), Size(768,432), Size(800,448), Size(960,720),
|
||||
Size(1024,768), Size(1280,720), Size(1280,960), Size(1360,720),
|
||||
Size(1600,1200), Size(1920,1080), Size(2048,1536), Size(2592,1920),
|
||||
Size(2592,1944), Size(3264,2448), Size(4096,3072), Size(4208,3120) ),
|
||||
ValuesIn( InterType::all() ),
|
||||
ValuesIn( BorderMode::all() ),
|
||||
Values( CV_8UC1, CV_8UC4 )
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
Size sz;
|
||||
int borderMode, interType;
|
||||
sz = get<0>(GetParam());
|
||||
Size size;
|
||||
int borderMode, interType, type;
|
||||
size = get<0>(GetParam());
|
||||
borderMode = get<1>(GetParam());
|
||||
interType = get<2>(GetParam());
|
||||
type = get<3>(GetParam());
|
||||
|
||||
string resolution;
|
||||
if (sz == sz3MP)
|
||||
resolution = "3MP";
|
||||
else if (sz == sz5MP)
|
||||
resolution = "5MP";
|
||||
Mat src, img = imread(getDataPath("cv/shared/5MP.png"));
|
||||
|
||||
if( type == CV_8UC1 )
|
||||
{
|
||||
cvtColor(img, src, COLOR_BGR2GRAY, 1);
|
||||
}
|
||||
else if( type == CV_8UC4 )
|
||||
{
|
||||
cvtColor(img, src, COLOR_BGR2BGRA, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
FAIL();
|
||||
}
|
||||
|
||||
Mat src, img = imread(getDataPath("cv/shared/" + resolution + ".png"));
|
||||
cvtColor(img, src, COLOR_BGR2BGRA, 4);
|
||||
resize(src, src, size);
|
||||
|
||||
int shift = 103;
|
||||
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(sz.width-1, 0),
|
||||
Vec2f(sz.width-1, sz.height-1), Vec2f(0, sz.height-1));
|
||||
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(sz.width-shift/2, 0),
|
||||
Vec2f(sz.width-shift, sz.height-shift), Vec2f(shift/2, sz.height-1));
|
||||
int shift = src.cols*0.04;
|
||||
Mat srcVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, 0), Vec2f(size.width-1, 0),
|
||||
Vec2f(size.width-1, size.height-1), Vec2f(0, size.height-1));
|
||||
Mat dstVertices = (Mat_<Vec2f>(1, 4) << Vec2f(0, shift), Vec2f(size.width-shift/2, 0),
|
||||
Vec2f(size.width-shift, size.height-shift), Vec2f(shift/2, size.height-1));
|
||||
Mat warpMat = getPerspectiveTransform(srcVertices, dstVertices);
|
||||
|
||||
Mat dst(sz, CV_8UC4);
|
||||
Mat dst(size, type);
|
||||
|
||||
declare.in(src).out(dst);
|
||||
|
||||
TEST_CYCLE()
|
||||
warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) );
|
||||
{
|
||||
warpPerspective( src, dst, warpMat, size, interType, borderMode, Scalar::all(150) );
|
||||
}
|
||||
|
||||
SANITY_CHECK(dst);
|
||||
}
|
||||
|
@ -1387,8 +1387,8 @@ struct RGB2Lab_f
|
||||
C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8];
|
||||
n *= 3;
|
||||
|
||||
static const float _1_3 = 1.0 / 3.0;
|
||||
static const double _a = 16.0 / 116;
|
||||
static const float _1_3 = 1.0f / 3.0f;
|
||||
static const float _a = 16.0f / 116.0f;
|
||||
for (i = 0; i < n; i += 3, src += scn )
|
||||
{
|
||||
float R = clip(src[0]);
|
||||
@ -1409,11 +1409,11 @@ struct RGB2Lab_f
|
||||
float Y = R*C3 + G*C4 + B*C5;
|
||||
float Z = R*C6 + G*C7 + B*C8;
|
||||
|
||||
float FX = X > 0.008856 ? pow(X, _1_3) : (7.787f * X + _a);
|
||||
float FY = Y > 0.008856 ? pow(Y, _1_3) : (7.787f * Y + _a);
|
||||
float FZ = Z > 0.008856 ? pow(Z, _1_3) : (7.787f * Z + _a);
|
||||
float FX = X > 0.008856f ? pow(X, _1_3) : (7.787f * X + _a);
|
||||
float FY = Y > 0.008856f ? pow(Y, _1_3) : (7.787f * Y + _a);
|
||||
float FZ = Z > 0.008856f ? pow(Z, _1_3) : (7.787f * Z + _a);
|
||||
|
||||
float L = Y > 0.008856 ? (116.f * FY - 16.f) : (903.3 * Y);
|
||||
float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y);
|
||||
float a = 500.f * (FX - FY);
|
||||
float b = 200.f * (FY - FZ);
|
||||
|
||||
|
@ -220,7 +220,7 @@ static const void* initInterTab2D( int method, bool fixpt )
|
||||
return fixpt ? (const void*)itab : (const void*)tab;
|
||||
}
|
||||
|
||||
|
||||
#ifndef __MINGW32__
|
||||
static bool initAllInterTab2D()
|
||||
{
|
||||
return initInterTab2D( INTER_LINEAR, false ) &&
|
||||
@ -232,6 +232,7 @@ static bool initAllInterTab2D()
|
||||
}
|
||||
|
||||
static volatile bool doInitAllInterTab2D = initAllInterTab2D();
|
||||
#endif
|
||||
|
||||
template<typename ST, typename DT> struct Cast
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ private:
|
||||
|
||||
__instype *split = median;
|
||||
for (; split != last && deref(ctor(*split), dim) ==
|
||||
deref(ctor(*median), dim); ++split);
|
||||
deref(ctor(*median), dim); ++split) {}
|
||||
|
||||
if (split == last) { // leaf
|
||||
int nexti = -1;
|
||||
@ -387,9 +387,8 @@ public:
|
||||
// ret_nn_pq is an array containing the (at most) k nearest neighbors
|
||||
// (see bbf_nn structure def above).
|
||||
template < class __desctype >
|
||||
int find_nn_bbf(const __desctype * d,
|
||||
int k, int emax,
|
||||
bbf_nn_pqueue & ret_nn_pq) const {
|
||||
int find_nn_bbf(const __desctype * d, int k, int emax, bbf_nn_pqueue & ret_nn_pq) const
|
||||
{
|
||||
assert(k > 0);
|
||||
ret_nn_pq.clear();
|
||||
|
||||
@ -400,7 +399,8 @@ public:
|
||||
// iterate while queue non-empty and emax>0
|
||||
tmp_pq.clear();
|
||||
tmp_pq.push_back(bbf_node(root_node, 0));
|
||||
while (tmp_pq.size() && emax > 0) {
|
||||
while (tmp_pq.size() && emax > 0)
|
||||
{
|
||||
|
||||
// from node nearest query point d, run to leaf
|
||||
std::pop_heap(tmp_pq.begin(), tmp_pq.end());
|
||||
@ -408,18 +408,17 @@ public:
|
||||
tmp_pq.erase(tmp_pq.end() - 1);
|
||||
|
||||
int i;
|
||||
for (i = bbf.node;
|
||||
i != -1 && nodes[i].dim >= 0;
|
||||
i = bbf_branch(i, d, tmp_pq));
|
||||
for (i = bbf.node; i != -1 && nodes[i].dim >= 0; i = bbf_branch(i, d, tmp_pq)) {}
|
||||
|
||||
if (i != -1) {
|
||||
if (i != -1)
|
||||
{
|
||||
|
||||
// add points in leaf/bin to ret_nn_pq
|
||||
do {
|
||||
bbf_new_nn(ret_nn_pq, k, d, nodes[i].value);
|
||||
} while (-1 != (i = nodes[i].right));
|
||||
// add points in leaf/bin to ret_nn_pq
|
||||
do {
|
||||
bbf_new_nn(ret_nn_pq, k, d, nodes[i].value);
|
||||
} while (-1 != (i = nodes[i].right));
|
||||
|
||||
--emax;
|
||||
--emax;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -414,7 +414,7 @@ static void icvFindStereoCorrespondenceByBirchfieldDP( uchar* src1, uchar* src2,
|
||||
for( x = 1; x < imgW; x++ )
|
||||
{
|
||||
i = x - 1;
|
||||
for( ; x < imgW && dest[y*widthStep+x] == dest[y*widthStep+x-1]; x++ );
|
||||
for( ; x < imgW && dest[y*widthStep+x] == dest[y*widthStep+x-1]; x++ ) {}
|
||||
s = x - i;
|
||||
for( ; i < x; i++ )
|
||||
{
|
||||
|
@ -633,7 +633,7 @@ static CvTestSeqElem* icvTestSeqReadElemOne(CvTestSeq_* pTS, CvFileStorage* fs,
|
||||
|
||||
for(i0=0, i1=1; i1<KeyFrameNum;)
|
||||
{
|
||||
for(i1=i0+1; i1<KeyFrameNum && KeyFrames[i1]<0; i1++);
|
||||
for(i1=i0+1; i1<KeyFrameNum && KeyFrames[i1]<0; i1++) {}
|
||||
|
||||
assert(i1<KeyFrameNum);
|
||||
assert(i1>i0);
|
||||
@ -779,7 +779,7 @@ static CvTestSeqElem* icvTestSeqReadElemAll(CvTestSeq_* pTS, CvFileStorage* fs,
|
||||
}
|
||||
|
||||
/* Find last element: */
|
||||
for(pElemLast=pElemNew;pElemLast && pElemLast->next;pElemLast= pElemLast->next);
|
||||
for(pElemLast=pElemNew;pElemLast && pElemLast->next;pElemLast= pElemLast->next) {}
|
||||
|
||||
} /* Next element. */
|
||||
} /* Read all element in sequence. */
|
||||
@ -842,7 +842,7 @@ CvTestSeq* cvCreateTestSeq(char* pConfigfile, char** videos, int numvideo, float
|
||||
else
|
||||
{
|
||||
CvTestSeqElem* p = NULL;
|
||||
for(p=pTS->pElemList;p->next;p=p->next);
|
||||
for(p=pTS->pElemList;p->next;p=p->next) {}
|
||||
p->next = pElemNew;
|
||||
}
|
||||
} /* Read all videos. */
|
||||
|
@ -31,28 +31,20 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
||||
int i, j, kk, c, ii, jj, d;
|
||||
float * datadx, * datady;
|
||||
|
||||
//номер канала в цикле
|
||||
int ch;
|
||||
//переменные вычисления магнитуды
|
||||
float magnitude, x, y, tx, ty;
|
||||
|
||||
IplImage * dx, * dy;
|
||||
int *nearest;
|
||||
float *w, a_x, b_x;
|
||||
|
||||
// ядро для вычисления градиентов изображение по осям x и y
|
||||
float kernel[3] = {-1.f, 0.f, 1.f};
|
||||
CvMat kernel_dx = cvMat(1, 3, CV_32F, kernel);
|
||||
CvMat kernel_dy = cvMat(3, 1, CV_32F, kernel);
|
||||
|
||||
// грачение градиента
|
||||
float * r;
|
||||
// новер сектора куда попало значение градиента
|
||||
// четные иннексы не контрастное изображение
|
||||
// не четные иннексы контрастное изображение
|
||||
int * alfa;
|
||||
|
||||
// векторы границ секторов
|
||||
float boundary_x[NUM_SECTOR + 1];
|
||||
float boundary_y[NUM_SECTOR + 1];
|
||||
float max, dotProd;
|
||||
@ -70,7 +62,7 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
||||
|
||||
sizeX = width / k;
|
||||
sizeY = height / k;
|
||||
px = 3 * NUM_SECTOR; // контрастное и не контрастное изображение
|
||||
px = 3 * NUM_SECTOR;
|
||||
p = px;
|
||||
stringSize = sizeX * p;
|
||||
allocFeatureMapObject(map, sizeX, sizeY, p);
|
||||
@ -138,7 +130,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
||||
}/*for(i = 0; i < width; i++)*/
|
||||
}/*for(j = 0; j < height; j++)*/
|
||||
|
||||
//подсчет весов и смещений
|
||||
nearest = (int *)malloc(sizeof(int ) * k);
|
||||
w = (float*)malloc(sizeof(float) * (k * 2));
|
||||
|
||||
@ -167,7 +158,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map)
|
||||
}/*for(j = k / 2; j < k; j++)*/
|
||||
|
||||
|
||||
//интерполяция
|
||||
for(i = 0; i < sizeY; i++)
|
||||
{
|
||||
for(j = 0; j < sizeX; j++)
|
||||
@ -275,7 +265,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
||||
sizeY -= 2;
|
||||
|
||||
newData = (float *)malloc (sizeof(float) * (sizeX * sizeY * pp));
|
||||
//normalization
|
||||
//normalization
|
||||
for(i = 1; i <= sizeY; i++)
|
||||
{
|
||||
for(j = 1; j <= sizeX; j++)
|
||||
@ -336,12 +326,12 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
||||
}/*for(ii = 0; ii < 2 * p; ii++)*/
|
||||
}/*for(j = 1; j <= sizeX; j++)*/
|
||||
}/*for(i = 1; i <= sizeY; i++)*/
|
||||
//truncation
|
||||
//truncation
|
||||
for(i = 0; i < sizeX * sizeY * pp; i++)
|
||||
{
|
||||
if(newData [i] > alfa) newData [i] = alfa;
|
||||
}/*for(i = 0; i < sizeX * sizeY * pp; i++)*/
|
||||
//swop data
|
||||
//swap data
|
||||
|
||||
map->numFeatures = pp;
|
||||
map->sizeX = sizeX;
|
||||
@ -354,6 +344,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa)
|
||||
|
||||
return LATENT_SVM_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
// Feature map reduction
|
||||
// In each cell we reduce dimension of the feature vector
|
||||
@ -427,7 +418,7 @@ int PCAFeatureMaps(CvLSVMFeatureMap *map)
|
||||
} /*for(ii = 0; ii < yp; ii++)*/
|
||||
}/*for(j = 0; j < sizeX; j++)*/
|
||||
}/*for(i = 0; i < sizeY; i++)*/
|
||||
//swop data
|
||||
//swap data
|
||||
|
||||
map->numFeatures = pp;
|
||||
|
||||
|
@ -3829,8 +3829,9 @@ static int zero = 0;
|
||||
coeff_usage = CV_VALUE; \
|
||||
else if ((length == alpha.count) && (alpha.count == beta.count) && (beta.count == gamma.count)) \
|
||||
coeff_usage = CV_ARRAY; \
|
||||
else \
|
||||
return (PyObject*)failmsg("SnakeImage weights invalid"); \
|
||||
else { \
|
||||
failmsg("SnakeImage weights invalid"); \
|
||||
return (PyObject*)0; } \
|
||||
cvSnakeImage(image, points, length, a, b, g, coeff_usage, win, criteria, calc_gradient); \
|
||||
} while (0)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user