From aa911275c3e2c1e30ac1c5f42ced42ef02b0f5b4 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 2 Jul 2012 14:12:34 +0000 Subject: [PATCH] Merged the trunk r8907, r8908 --- .../android_binary_package_using_with_NDK.rst | 31 ++------- .../images/eclipse_cdt_cfg4.png | Bin 43393 -> 42671 bytes samples/python2/digits.py | 64 +++++++++++++++--- samples/python2/digits_adjust.py | 10 +-- samples/python2/digits_video.py | 11 ++- samples/python2/fitline.py | 8 ++- 6 files changed, 74 insertions(+), 50 deletions(-) diff --git a/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.rst b/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.rst index f4f4aed85a..50f97f9ed6 100644 --- a/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.rst +++ b/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.rst @@ -158,40 +158,19 @@ then paste the CDT 8.0 repository URL http://download.eclipse.org/tools/cdt/rele .. image:: images/eclipse_inst_cdt_2.png :alt: Configure builders :align: center -.. important:: This instructions should be applied for each Android project in *Eclipse* workspace having native (JNI) part to build. -#. Right click on your project in :guilabel:`Package Explorer` window and select :guilabel:`New` -> :guilabel:`Other`: - - .. image:: images/eclipse_cdt_cfg1.png - :alt: Configure CDT - :align: center + +.. important:: OpenCV 2.4.2 for Android package contains samples projects pre-configured to use CDT Builder for JNI part build via ``ndk-build``. -#. Select :guilabel:`C/C++` -> :guilabel:`Convert to C/C++ project`: +#. Define the ``NDKROOT`` environment variable containing the path to Android NDK in your system (e.g. **"X:\\Apps\\android-ndk-r8"** or **"/opt/android-ndk-r8"**) - .. image:: images/eclipse_cdt_cfg2.png - :alt: Configure CDT - :align: center +#. CDT Builder is configured for Windows hosts, on Linux or MacOS open `Project Properties` of the projects having JNI part (`face-detection`, `Tutorial 3` and `Tutorial 4`), select :guilabel:`C/C++ Build` in the left pane, remove **".cmd"** and leave ``"${NDKROOT}/ndk-build"`` in the :guilabel:`Build command` edit box and click :guilabel:`OK`. -#. Select :guilabel:`"C++"`, :guilabel:`"Makefile Project"`, :guilabel:`"Other Toolchain"`: - - .. image:: images/eclipse_cdt_cfg3.png - :alt: Configure CDT - :align: center - -#. Right click on your project in :guilabel:`Package Explorer` window and select :guilabel:`Properties`, then :guilabel:`C/C++ Build` in the left pane. - Unckeck :guilabel:`Use default build command` and put ``ndk-build`` invocation in the :guilabel:`Build command` edit box and click :guilabel:`Apply` : .. image:: images/eclipse_cdt_cfg4.png :alt: Configure CDT :align: center -#. Select :guilabel:`Builders` in the left pane, select :guilabel:`"CDT Builder"`, press :guilabel:`Edit` button on the righ and set check-boxes as on the picture below for automatic rebuild of JNI part: - - .. image:: images/eclipse_cdt_cfg5.png - :alt: Configure CDT - :align: center - - #. Use menu :guilabel:`Project` -> :guilabel:`Clean...` to make sure that NDK build is invoked on the project build: .. image:: images/eclipse_ndk_build.png @@ -243,7 +222,7 @@ OpenCV binary package includes 3 samples having JNI resources: This sample illustrates usage of both simple OpenCV face detector via Java API and advanced detection based face tracker via JNI and C++. -Before OpenCV 2.4.2 for Android these projects are not configured to use CDT for building their native part , so you can do it yourself. +.. important:: Before OpenCV **2.4.2** for Android these projects were not configured to use CDT for building their native part , so you can do it yourself. Practice: Create an Android application, which uses OpenCV ========================================================== diff --git a/doc/tutorials/introduction/android_binary_package/images/eclipse_cdt_cfg4.png b/doc/tutorials/introduction/android_binary_package/images/eclipse_cdt_cfg4.png index 49ee09347df0101dda7d93370acc2e77d1eab2b1..55b81df3402a7a059ee522b18cc20218923c8ab3 100644 GIT binary patch literal 42671 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 literal 43393 zcmZ_01ymbP^e;}8wiGB(tXT0DEycYO+=>@((cP6f&_vG zNFZcqEsShruv(}?&&bEi5F(m3hqn3l|_1oKrw9YM2gx77B z^&;@YgM%UBva%!a&PXag)3v??c3a0|cdhH|i-OH^4+H#?XQD&De*4znasi#(zrOH! za-0+a6gg0{&+&5Ife+1f^($L-TZ`Ix9|!}9J90|B>my9+s{R#Ry(83)co|efe04gU zC<4ZCm~>yw1sJi(#(Lv^Pu0!CAAXCb?%0Db=IS%ek#8qXZVdrg{QFj=*u?#b9% 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≥lzx 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 diff --git a/samples/python2/digits.py b/samples/python2/digits.py index 1bfbf4dd63..f39591e6f3 100644 --- a/samples/python2/digits.py +++ b/samples/python2/digits.py @@ -3,8 +3,19 @@ SVN and KNearest digit recognition. Sample loads a dataset of handwritten digits from 'digits.png'. Then it trains a SVN and KNearest classifiers on it and evaluates -their accuracy. Moment-based image deskew is used to improve -the recognition accuracy. +their accuracy. + +Following preprocessing is applied to the dataset: + - Moment-based image deskew (see deskew()) + - Digit images are split into 4 10x10 cells and 16-bin + histogram of oriented gradients is computed for each + cell + - Transform histograms to space with Hellinger metric (see [1] (RootSIFT)) + + +[1] R. Arandjelovic, A. Zisserman + "Three things everyone should know to improve object retrieval" + http://www.robots.ox.ac.uk/~vgg/publications/2012/Arandjelovic12/arandjelovic12.pdf Usage: digits.py @@ -14,17 +25,25 @@ import numpy as np import cv2 from multiprocessing.pool import ThreadPool from common import clock, mosaic +from numpy.linalg import norm SZ = 20 # size of each digit is SZ x SZ CLASS_N = 10 DIGITS_FN = 'digits.png' +def split2d(img, cell_size, flatten=True): + h, w = img.shape[:2] + sx, sy = cell_size + cells = [np.hsplit(row, w//sx) for row in np.vsplit(img, h//sy)] + cells = np.array(cells) + if flatten: + cells = cells.reshape(-1, sy, sx) + return cells + def load_digits(fn): print 'loading "%s" ...' % fn digits_img = cv2.imread(fn, 0) - h, w = digits_img.shape - digits = [np.hsplit(row, w/SZ) for row in np.vsplit(digits_img, h/SZ)] - digits = np.array(digits).reshape(-1, SZ, SZ) + digits = split2d(digits_img, (SZ, SZ)) labels = np.repeat(np.arange(CLASS_N), len(digits)/CLASS_N) return digits, labels @@ -92,6 +111,31 @@ def evaluate_model(model, digits, samples, labels): vis.append(img) return mosaic(25, vis) +def preprocess_simple(digits): + return np.float32(digits).reshape(-1, SZ*SZ) / 255.0 + +def preprocess_hog(digits): + samples = [] + for img in digits: + gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) + gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) + mag, ang = cv2.cartToPolar(gx, gy) + bin_n = 16 + bin = np.int32(bin_n*ang/(2*np.pi)) + bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] + mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] + hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] + hist = np.hstack(hists) + + # transform to Hellinger kernel + eps = 1e-7 + hist /= hist.sum() + eps + hist = np.sqrt(hist) + hist /= norm(hist) + eps + + samples.append(hist) + return np.float32(samples) + if __name__ == '__main__': print __doc__ @@ -100,13 +144,13 @@ if __name__ == '__main__': print 'preprocessing...' # shuffle digits - rand = np.random.RandomState(12345) + rand = np.random.RandomState(321) shuffle = rand.permutation(len(digits)) digits, labels = digits[shuffle], labels[shuffle] digits2 = map(deskew, digits) - samples = np.float32(digits2).reshape(-1, SZ*SZ) / 255.0 - + samples = preprocess_hog(digits2) + train_n = int(0.9*len(samples)) cv2.imshow('test set', mosaic(25, digits[train_n:])) digits_train, digits_test = np.split(digits2, [train_n]) @@ -115,13 +159,13 @@ if __name__ == '__main__': print 'training KNearest...' - model = KNearest(k=1) + model = KNearest(k=4) model.train(samples_train, labels_train) vis = evaluate_model(model, digits_test, samples_test, labels_test) cv2.imshow('KNearest test', vis) print 'training SVM...' - model = SVM(C=4.66, gamma=0.08) + model = SVM(C=2.67, gamma=5.383) model.train(samples_train, labels_train) vis = evaluate_model(model, digits_test, samples_test, labels_test) cv2.imshow('SVM test', vis) diff --git a/samples/python2/digits_adjust.py b/samples/python2/digits_adjust.py index e5a751a6be..c2a238dafa 100644 --- a/samples/python2/digits_adjust.py +++ b/samples/python2/digits_adjust.py @@ -76,7 +76,7 @@ class App(object): shuffle = np.random.permutation(len(digits)) digits, labels = digits[shuffle], labels[shuffle] digits2 = map(deskew, digits) - samples = np.float32(digits2).reshape(-1, SZ*SZ) / 255.0 + samples = preprocess_hog(digits2) return samples, labels def get_dataset(self): @@ -95,8 +95,8 @@ class App(object): return ires def adjust_SVM(self): - Cs = np.logspace(0, 5, 10, base=2) - gammas = np.logspace(-7, -2, 10, base=2) + Cs = np.logspace(0, 10, 15, base=2) + gammas = np.logspace(-7, 4, 15, base=2) scores = np.zeros((len(Cs), len(gammas))) scores[:] = np.nan @@ -114,6 +114,9 @@ class App(object): print '%d / %d (best error: %.2f %%, last: %.2f %%)' % (count+1, scores.size, np.nanmin(scores)*100, score*100) print scores + print 'writing score table to "svm_scores.npz"' + np.savez('svm_scores.npz', scores=scores, Cs=Cs, gammas=gammas) + i, j = np.unravel_index(scores.argmin(), scores.shape) best_params = dict(C = Cs[i], gamma=gammas[j]) print 'best params:', best_params @@ -142,7 +145,6 @@ if __name__ == '__main__': print __doc__ - args, _ = getopt.getopt(sys.argv[1:], '', ['model=', 'cloud', 'env=']) args = dict(args) args.setdefault('--model', 'svm') diff --git a/samples/python2/digits_video.py b/samples/python2/digits_video.py index 0eddadf854..2a46daad32 100644 --- a/samples/python2/digits_video.py +++ b/samples/python2/digits_video.py @@ -1,10 +1,10 @@ import numpy as np import cv2 -import digits import os import video from common import mosaic +from digits import * def main(): @@ -15,11 +15,9 @@ def main(): print '"%s" not found, run digits.py first' % classifier_fn return - model = digits.SVM() + model = SVM() model.load('digits_svm.dat') - SZ = 20 - while True: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) @@ -55,13 +53,12 @@ def main(): A[:,:2] = np.eye(2)*s A[:,2] = t sub1 = cv2.warpAffine(sub, A, (SZ, SZ), flags=cv2.WARP_INVERSE_MAP | cv2.INTER_LINEAR) - sub1 = digits.deskew(sub1) + sub1 = deskew(sub1) if x+w+SZ < frame.shape[1] and y+SZ < frame.shape[0]: frame[y:,x+w:][:SZ, :SZ] = sub1[...,np.newaxis] - sample = np.float32(sub1).reshape(1,SZ*SZ) / 255.0 + sample = preprocess_hog([sub1]) digit = model.predict(sample)[0] - cv2.putText(frame, '%d'%digit, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.0, (200, 0, 0), thickness = 1) diff --git a/samples/python2/fitline.py b/samples/python2/fitline.py index 71e2cb0550..9ba8839373 100644 --- a/samples/python2/fitline.py +++ b/samples/python2/fitline.py @@ -2,14 +2,16 @@ Robust line fitting. ================== -Example of using cv2.fitLine function for fitting line to points in presence of outliers. +Example of using cv2.fitLine function for fitting line +to points in presence of outliers. Usage ----- fitline.py -Switch through different M-estimator functions and see, how well the robust functions -fit the line even in case of ~50% of outliers. +Switch through different M-estimator functions and see, +how well the robust functions fit the line even +in case of ~50% of outliers. Keys ----