fwrite( (void*)&mat.rows, sizeof(int), 1, f );
fwrite( (void*)&mat.cols, sizeof(int), 1, f );
fwrite( (void*)&type, sizeof(int), 1, f );
- int dataSize = (int)(mat.step * mat.rows * mat.channels());
+ int dataSize = (int)(mat.step * mat.rows);
fwrite( (void*)&dataSize, sizeof(int), 1, f );
fwrite( (void*)mat.data, 1, dataSize, f );
fclose(f);
size_t elements_read4 = fread( (void*)&dataSize, sizeof(int), 1, f );
CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1);
- uchar* data = (uchar*)cvAlloc(dataSize);
- size_t elements_read = fread( (void*)data, 1, dataSize, f );
+ Mat returnMat(rows, cols, type);
+ CV_Assert(returnMat.step * returnMat.rows == (size_t)(dataSize));
+
+ size_t elements_read = fread( (void*)returnMat.data, 1, dataSize, f );
CV_Assert(elements_read == (size_t)(dataSize));
+
fclose(f);
- return Mat( rows, cols, type, data );
+ return returnMat;
}
return Mat();
}
//
// constructor
//
- CV_FeatureDetectorMatcherBaseTest(testparam* _tp, double _accuracy_margin, cv::Feature2D* _fe, cv::DescriptorMatcher *_flmatcher, string _flmatchername, int norm_type_for_bfmatcher) :
+ CV_FeatureDetectorMatcherBaseTest(testparam* _tp, double _accuracy_margin, cv::Feature2D* _fe,
+ cv::DescriptorMatcher *_flmatcher, string _flmatchername, int norm_type_for_bfmatcher) :
tp(_tp),
target_accuracy_margin_from_bfmatcher(_accuracy_margin),
fe(_fe),
bfmatcher = new cv::BFMatcher(norm_type_for_bfmatcher);
}
+ virtual ~CV_FeatureDetectorMatcherBaseTest()
+ {
+ if (bfmatcher)
+ {
+ delete bfmatcher;
+ bfmatcher = NULL;
+ }
+ }
+
//
// Main Test method
//
class CV_KDTreeTest_CPP : public NearestNeighborTest
{
public:
- CV_KDTreeTest_CPP() {}
+ CV_KDTreeTest_CPP() : NearestNeighborTest(), tr(NULL) {}
protected:
virtual void createModel( const Mat& data );
virtual int checkGetPoints( const Mat& data );
class CV_FlannTest : public NearestNeighborTest
{
public:
- CV_FlannTest() {}
+ CV_FlannTest() : NearestNeighborTest(), index(NULL) { }
protected:
void createIndex( const Mat& data, const IndexParams& params );
int knnSearch( Mat& points, Mat& neighbors );
void CV_FlannTest::createIndex( const Mat& data, const IndexParams& params )
{
+ // release previously allocated index
+ releaseModel();
+
index = new Index( data, params );
}
void CV_FlannTest::releaseModel()
{
- delete index;
+ if (index)
+ {
+ delete index;
+ index = NULL;
+ }
}
//---------------------------------------
if (rthis.levels > 1)
{
- int less_rows = (rows + 1) / 2;
- int less_cols = (cols + 1) / 2;
+ int less_rows = rows / 2;
+ int less_cols = cols / 2;
u2.create(less_rows * rthis.ndisp, less_cols, rthis.msg_type);
d2.create(less_rows * rthis.ndisp, less_cols, rthis.msg_type);
for (int i = 1; i < rthis.levels; ++i)
{
- cols_all[i] = (cols_all[i-1] + 1) / 2;
- rows_all[i] = (rows_all[i-1] + 1) / 2;
+ cols_all[i] = cols_all[i-1] / 2;
+ rows_all[i] = rows_all[i-1] / 2;
datas[i].create(rows_all[i] * rthis.ndisp, cols_all[i], rthis.msg_type);
cv::Mat h_disp(disp);
h_disp.convertTo(h_disp, disp_gold.depth());
- EXPECT_MAT_NEAR(disp_gold, h_disp, 0.0);
+ cv::Rect roi(0, 0, disp_gold.cols - 20, disp_gold.rows - 20);
+
+ EXPECT_MAT_NEAR(disp_gold(roi), h_disp(roi), 0.0);
}
INSTANTIATE_TEST_CASE_P(GPU_Calib3D, StereoBeliefPropagation, ALL_DEVICES);
_layer_sizes = (CvMat*)cvReadByName( fs, node, "layer_sizes" );
CV_CALL( create( _layer_sizes, SIGMOID_SYM, 0, 0 ));
+
+ cvReleaseMat( &_layer_sizes );
+ _layer_sizes = NULL;
+
l_count = layer_sizes->cols;
CV_CALL( read_params( fs, node ));
if( data )
delete data;
+ if ( pair16u32s_ptr )
+ cvFree( &pair16u32s_ptr );
+
if (_fdst)
cvFree( &_fdst );
if (_idst)
return -FLT_MAX;
float* pred_resp = 0;
+ bool needsFreeing = false;
+
if (resp)
{
resp->resize(n);
pred_resp = &((*resp)[0]);
}
else
+ {
pred_resp = new float[n];
+ needsFreeing = true;
+ }
Sample_predictor predictor = Sample_predictor(this, pred_resp, _data->get_values(),
_data->get_missing(), _sample_idx);
err = err / (float)n;
}
+ if (needsFreeing)
+ delete[]pred_resp;
+
return err;
}
params.svm_type == CvSVM::ONE_CLASS ? 1 : 0;
const CvSVMDecisionFunc* df = decision_func;
if( !isSvmModelApplicable(sv_total, var_all, var_count, class_count) )
+ {
+ cvReleaseFileStorage( &fs );
+ fs = NULL;
+
CV_ERROR( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" );
+ }
cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_SVM );