Перейти к содержимому
Compvision.ru

yarooooo

Пользователи
  • Количество публикаций

    1
  • Зарегистрирован

  • Посещение

Все публикации пользователя yarooooo

  1. Android+OpenCV, calcOpticalFlowPyrLK

    При вызове из Java комбинация goodFeaturesToTrack+calcOpticalFlowPyrLK работает намного более быстрее, чем если ее же вызывать в нативе, хотя ,по идее, должно быть наоборот. Вот нативный код: bool first = true; //arguments for goodFeatures int maxCorners = 23; double qualityLevel = 0.1; double minDistance = 10; int blockSize = 2; bool useHarrisDetector = false; double k = 0.04; //arguments for lucas-kanade cpp vector<uchar> status; vector<float> track_error; Size winSize(5, 5); int maxLevel = 2; TermCriteria tc(TermCriteria::COUNT + TermCriteria::EPS, 5, 0.1); double derivLambda = 0; int flags = 0; vector<Point2f> vprev; vector<Point2f> vnew; vector<Point2f> vprevNow; extern "C" { JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial4_Sample4View_FindFeatures(JNIEnv* env, jobject thiz, jlong addrGray, jlong addrRgba, jlong addrPrevGray) { Mat* now=(Mat*)addrGray; Mat* frame=(Mat*)addrRgba; Mat* prev=(Mat*)addrPrevGray; goodFeaturesToTrack( *now, vnew, maxCorners, qualityLevel, minDistance, Mat(), blockSize, useHarrisDetector, k ); for( size_t i = 0; i < vnew.size(); i++ ) { circle(*frame, Point(vnew[i].x, vnew[i].y), 10, Scalar(255,0,0,255)); } calcOpticalFlowPyrLK(*prev, *now, vprev, vprevNow, status, track_error, winSize, maxLevel, tc, derivLambda,flags); vprev.clear(); vector<Point2f>::iterator iter=vnew.begin(); while (iter != vnew.end()) { vprev.push_back(*iter); ++iter; } vnew.clear(); vprevNow.clear(); } } Подскажите, пожалуйста, где ошибка или что можно оптимизировать. jni_part.cpp
×