編輯:關於Android編程
KqwOpenCVFeaturesDemo
Canny邊緣檢測器是一種被廣泛使用的算法,並被認為是邊緣檢測最優的算法,該方法使用了比高斯差分算法更復雜的技巧,如多向灰度梯度和滯後阈值化。
算法比較復雜,但是使用很簡單,首先將圖像灰度化
// 原圖置灰 Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY);
然後調用Imgproc.Canny()方法即可
// Canny邊緣檢測器檢測圖像邊緣
Imgproc.Canny(grayMat, cannyEdges, 10, 100);
第一個參數表示圖像輸入 第二個參數表述圖像輸出 第三個參數表示低阈值 第四個參數表示高阈值
在Canny邊緣檢測算法中,將圖像中的點歸為三類:
被抑制點
灰度梯度值 < 低阈值
弱邊緣點
低阈值 <= 灰度梯度值 <= 高阈值
強邊緣點
高阈值 < 灰度梯度值
封裝
/**
* Canny邊緣檢測算法
*
* @param bitmap 要檢測的圖片
*/
public void canny(Bitmap bitmap) {
if (null != mSubscriber)
Observable
.just(bitmap)
.map(new Func1() {
@Override
public Bitmap call(Bitmap bitmap) {
Mat grayMat = new Mat();
Mat cannyEdges = new Mat();
// Bitmap轉為Mat
Mat src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC4);
Utils.bitmapToMat(bitmap, src);
// 原圖置灰
Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY);
// Canny邊緣檢測器檢測圖像邊緣
Imgproc.Canny(grayMat, cannyEdges, 10, 100);
// Mat轉Bitmap
Bitmap processedImage = Bitmap.createBitmap(cannyEdges.cols(), cannyEdges.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(cannyEdges, processedImage);
return processedImage;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mSubscriber);
}
使用
// 圖片特征提取的工具類
mFeaturesUtil = new FeaturesUtil(new Subscriber() {
@Override
public void onCompleted() {
// 圖片處理完成
dismissProgressDialog();
}
@Override
public void onError(Throwable e) {
// 圖片處理異常
dismissProgressDialog();
}
@Override
public void onNext(Bitmap bitmap) {
// 獲取到處理後的圖片
mImageView.setImageBitmap(bitmap);
}
});
// Canny邊緣檢測器檢測圖像邊緣
mFeaturesUtil.canny(mSelectImage);
Android中有兩種主要方式使用Service,通過調用Context的startService方法或調用Context的bindService方法,本文只探討純bin
最近剛換了電腦,開始搭建Android開發環境的時候,下載SDK總是會出現如下錯誤:復制代碼 代碼如下:Failed to fetch URL http://dl-ssl
先上圖: 省市縣三級聯動,選地址經常用到用NumberPicker控件實現滑動,json數據解析使用fastjson框架使用很簡單,傳入一個String[
Android-ListView兩種適配器ListView在安卓App中非常常見,幾乎每一個App都會有涉及,比如QQ消息列表,或者是通訊錄還有就是酷我音樂的歌曲列表都是