private void prepareSpherify(Bitmap bitmap) { int insideCircleOutRadius; int topY, footY, withinHeight; if (!OpenCVLoader.initDebug()) { // Handle initialization error AppFunctions.showToast(activity.getApplicationContext(), "OpenGL initialization error!"); activity.finish(); } if (srcImage == null) { srcImage = new Mat(); srcImage.create(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC3); Bitmap myBitmap32 = bitmap.copy(Bitmap.Config.ARGB_8888, true); Utils.bitmapToMat(myBitmap32, srcImage); Imgproc.cvtColor(srcImage, srcImage, Imgproc.COLOR_BGR2RGB, 4); } Utils.bitmapToMat(bitmap, srcImage); // cropImage(); seamlessEdges(srcImage); mSrcWidth = srcImage.cols(); mSrcHeight = srcImage.rows(); halfGenImageSize = genImageSize / 2; spherifiedImage = new Mat(); spherifiedImage.create(genImageSize, genImageSize, CvType.CV_8UC4); insideCircleOutRadius = (int) (genImageSize / 12); topY = (int) (mSrcHeight * (topMargin)); footY = (int) (mSrcHeight * (footMargin)); withinHeight = topY - footY; scale = withinHeight / ((double) (croppedImageSize / 2 - insideCircleOutRadius)); offset = (int) (footY - scale * insideCircleOutRadius); numProcesses = Runtime.getRuntime().availableProcessors(); if (numProcesses < 3) numProcesses = 1; else numProcesses = 3; }
/** * The system calls this to perform work in the UI thread and delivers the result from * doInBackground() */ protected void onPostExecute(Bitmap result) { activity.spherifyDoneActions(); }
protected void onProgressUpdate(Integer... progress) { activity.setProgressPercent(progress[0]); }