void BTVL1::collectGarbage() { // Mat curFrame_.release(); prevFrame_.release(); frames_.clear(); forwardMotions_.clear(); backwardMotions_.clear(); outputs_.clear(); srcFrames_.clear(); srcForwardMotions_.clear(); srcBackwardMotions_.clear(); finalOutput_.release(); #ifdef HAVE_OPENCL // UMat ucurFrame_.release(); uprevFrame_.release(); uframes_.clear(); uforwardMotions_.clear(); ubackwardMotions_.clear(); uoutputs_.clear(); usrcFrames_.clear(); usrcForwardMotions_.clear(); usrcBackwardMotions_.clear(); #endif SuperResolution::collectGarbage(); BTVL1_Base::collectGarbage(); }
void SURF_OCL::uploadKeypoints(const std::vector<KeyPoint> &keypoints, UMat &keypointsGPU) { if (keypoints.empty()) keypointsGPU.release(); else { Mat keypointsCPU(SURF_OCL::ROWS_COUNT, static_cast<int>(keypoints.size()), CV_32FC1); float *kp_x = keypointsCPU.ptr<float>(SURF_OCL::X_ROW); float *kp_y = keypointsCPU.ptr<float>(SURF_OCL::Y_ROW); int *kp_laplacian = keypointsCPU.ptr<int>(SURF_OCL::LAPLACIAN_ROW); int *kp_octave = keypointsCPU.ptr<int>(SURF_OCL::OCTAVE_ROW); float *kp_size = keypointsCPU.ptr<float>(SURF_OCL::SIZE_ROW); float *kp_dir = keypointsCPU.ptr<float>(SURF_OCL::ANGLE_ROW); float *kp_hessian = keypointsCPU.ptr<float>(SURF_OCL::HESSIAN_ROW); for (size_t i = 0, size = keypoints.size(); i < size; ++i) { const KeyPoint &kp = keypoints[i]; kp_x[i] = kp.pt.x; kp_y[i] = kp.pt.y; kp_octave[i] = kp.octave; kp_size[i] = kp.size; kp_dir[i] = kp.angle; kp_hessian[i] = kp.response; kp_laplacian[i] = 1; } keypointsCPU.copyTo(keypointsGPU); } }
TEST_P(UMatBasicTests, base) { const int align_mask = 3; roi.x &= ~align_mask; roi.y &= ~align_mask; roi.width = (roi.width + align_mask) & ~align_mask; roi &= Rect(0, 0, ua.cols, ua.rows); if(useRoi) { ua = UMat(ua,roi); } UMat ub = ua.clone(); EXPECT_MAT_NEAR(ub,ua,0); ASSERT_EQ(ua.channels(), cn); ASSERT_EQ(ua.depth(), depth); ASSERT_EQ(ua.type(), type); ASSERT_EQ(ua.elemSize(), a.elemSize()); ASSERT_EQ(ua.elemSize1(), a.elemSize1()); ASSERT_EQ(ub.empty(), ub.cols*ub.rows == 0); ub.release(); ASSERT_TRUE( ub.empty() ); if(useRoi && a.size() != ua.size()) { ASSERT_EQ(ua.isSubmatrix(), true); } else { ASSERT_EQ(ua.isSubmatrix(), false); } int dims = randomInt(2,6); int sz[CV_MAX_DIM]; size_t total = 1; for(int i = 0; i<dims; i++) { sz[i] = randomInt(1,45); total *= (size_t)sz[i]; } int new_type = CV_MAKE_TYPE(randomInt(CV_8S,CV_64F),randomInt(1,4)); ub = UMat(dims, sz, new_type); ASSERT_EQ(ub.total(), total); }
void BTVL1_Base::collectGarbage() { filter_.release(); // Mat lowResForwardMotions_.clear(); lowResBackwardMotions_.clear(); highResForwardMotions_.clear(); highResBackwardMotions_.clear(); forwardMaps_.clear(); backwardMaps_.clear(); highRes_.release(); diffTerm_.release(); regTerm_.release(); a_.release(); b_.release(); c_.release(); #ifdef HAVE_OPENCL // UMat ulowResForwardMotions_.clear(); ulowResBackwardMotions_.clear(); uhighResForwardMotions_.clear(); uhighResBackwardMotions_.clear(); uforwardMaps_.clear(); ubackwardMaps_.clear(); uhighRes_.release(); udiffTerm_.release(); uregTerm_.release(); ua_.release(); ub_.release(); uc_.release(); #endif }