public static void loop(int from, int to, final Looper looper) { loop(from, to, getNumThreads(), looper); } public static void loop(int from, int to, int numThreads, final Looper looper) {
public static void loop(int from, int to, int numThreads, final Looper looper) { int numLoopers = Math.min(to-from, numThreads > 0 ? numThreads : getNumCores()); Runnable[] runnables = new Runnable[numLoopers]; for (int i = 0; i < numLoopers; i++) { final int subFrom = (to-from)*i/numLoopers + from; final int subTo = (to-from)*(i+1)/numLoopers + from; final int looperID = i; runnables[i] = new Runnable() { public void run() { looper.loop(subFrom, subTo, looperID); } }; } run(runnables); } }
cvSetZero(hessian); Parallel.loop(0, n, new Parallel.Looper() { public void loop(int from, int to, int looperID) {
@Override protected ParallelData[] initialValue() { ParallelData[] pd = new ParallelData[Parallel.getNumThreads()]; for (int i = 0; i < pd.length; i++) { pd[i] = new ParallelData(); } return pd; } };
public static int getNumThreads() { try { String s = System.getProperty(NUM_THREADS); if (s != null) { return Integer.valueOf(s); } } catch (NumberFormatException e) { throw new RuntimeException(e); } return getNumCores(); } public static void setNumThreads(int numThreads) {
grayscaleImage[cameraNumber].origin()); Parallel.run(new Runnable() { public void run() { cvConvertScale(grayscaleImage[cameraNumber], tempImage1[cameraNumber], 1.0/(1<<LSB_IMAGE_SHIFT), 0); }}); } else { Parallel.run(new Runnable() { public void run() { lastDetectedMarkers1[cameraNumber] = cameraCalibrators[cameraNumber]. markerDetector.detect(grayscaleImage[cameraNumber], boardWhiteMarkers);
cvSetZero(hessian); Parallel.loop(0, n, new Parallel.Looper() { public void loop(int from, int to, int looperID) {
protected GNImageAligner(ImageTransformer transformer, Parameters initialParameters) { this.n = initialParameters.size(); this.srcRoiPts = CvMat.create(4, 1, CV_64F, 2); this.dstRoiPts = CvMat.create(4, 1, CV_64F, 2); this.dstRoiPtsArray = new CvPoint(4); this.roi = new CvRect(); this.temproi = new CvRect(); this.transformer = transformer; this.parameters = initialParameters.clone(); this.parametersArray = new Parameters[] { parameters }; this.tempParameters = new Parameters[n]; for (int i = 0; i < tempParameters.length; i++) { this.tempParameters[i] = initialParameters.clone(); } subspaceParameters = parameters.getSubspace(); if (subspaceParameters != null) { tempSubspaceParameters = new double[Parallel.getNumThreads()][]; for (int i = 0; i < tempSubspaceParameters.length; i++) { tempSubspaceParameters[i] = subspaceParameters.clone(); } // for (double d : subspaceParameters) { // System.out.print(d + " "); // } // System.out.println(); } }
Parallel.loop(0, h, new Parallel.Looper() { public void loop(int from, int to, int looperID) { for (int y = from; y < to; y++) {
tempParameters[0].set(parameters); tempParameters[0].setSubspace(subspaceParameters); Parallel.loop(0, n+m, tempSubspaceParameters.length, new Parallel.Looper() { public void loop(int from, int to, int looperID) { Parallel.loop(0, n+m, new Parallel.Looper() { public void loop(int from, int to, int looperID) {
w = img.width(); h = img.height(); Parallel.loop(y, y+h, pd.length, new Parallel.Looper() { public void loop(int from, int to, int looperID) { CvRect r = pd[looperID].roi.x(x).y(from).width(w).height(to-from);