編輯:關於Android編程
KqwOpenCVBlurDemo
亮區擴張,也叫膨脹,要實現這樣的效果,我們可以選取一個合適大小的核,用被核覆蓋的最大值代替錨點像素。膨脹可以用來融合可能被分割的目標。
我們首先定義一個合適大小的核
Mat kernelDilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));
然後調用Imgproc.dilate()方法把圖像的亮區放大
// 擴大亮區
Imgproc.dilate(src, src, kernelDilate);
封裝
這裡我用到了RxJava。主要是因為圖片處理是耗時操作,會阻塞線程,為了防止界面卡頓,這裡使用RxJava進行了線程切換。
/**
* 擴大圖片亮區
*
* @param bitmap 要處理的圖片
*/
public void dilate(Bitmap bitmap) {
// 使用RxJava處理圖片
if (null != mSubscriber)
Observable
.just(bitmap)
.map(new Func1() {
@Override
public Bitmap call(Bitmap bitmap) {
// Bitmap轉為Mat
Mat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);
Utils.bitmapToMat(bitmap, src);
// 定義一個合適大小的核
Mat kernelDilate = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3, 3));
// 擴大亮區
Imgproc.dilate(src, src, kernelDilate);
// Mat轉Bitmap
Bitmap processedImage = Bitmap.createBitmap(src.cols(), src.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(src, processedImage);
return processedImage;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mSubscriber);
}
調用
// 圖片處理的工具類
mBlurUtil = new BlurUtil(new Subscriber() {
@Override
public void onCompleted() {
// 圖片處理完成
dismissProgressDialog();
}
@Override
public void onError(Throwable e) {
// 圖片處理異常
dismissProgressDialog();
}
@Override
public void onNext(Bitmap bitmap) {
// 獲取到處理後的圖片
mIvImageProcessed.setImageBitmap(bitmap);
}
});
// 擴大圖片亮區
mBlurUtil.dilate(mSelectImage);
前面學習總結了平時開發中遇見的各種數據加密方式,最終都會對加密後的二進制數據進行Base64編碼,起到一種二次加密的效果,其實呢Base64從嚴格意義上來說的話不是一種加
最近在學Android 學的不好 然後看到了用.9.png寫對話框的哪裡,但是書上寫的太簡單 感覺做出來和書上的不一樣 然後就去各種百度 感覺網上關於這個東西的資料都是粘
1、添加android support包因為上面的幾個類都是在android support包中才提供,我們先添加包。在Eclipse->Window->An
很多筒子覺得自定義View是高手的象征,其實不然。大家覺得自定義View難很多情況下可能是因為自定義View涉及到了太多的類和API,把人搞得暈乎乎的,那麼今天我們就從最