国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android App開發(fā)超實用實例 | OpenCV在Android手機實現(xiàn)在圖像上添加文本

這篇具有很好參考價值的文章主要介紹了Android App開發(fā)超實用實例 | OpenCV在Android手機實現(xiàn)在圖像上添加文本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

?OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,它可以運行在Linux、Windows、Android和Mac OS等操作系統(tǒng)上。OpenCV原本由一系列 C 函數(shù)和少量 C++ 類構成,同時提供了Python等其他語言的接口,它實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。下面這個實例演示了使用OpenCV在Android手機實現(xiàn)在圖像上繪制文本。本文提供的OpenCV實例使用Java語言編寫,并且運行在Android手機上。

01、實例功能

此實例主要通過使用Imgproc的putText()方法,實現(xiàn)在圖像上繪制(添加)文本。Imgproc是Image和Processing這兩個單詞的縮寫組合,它是OpenCV的圖像處理模塊,該模塊包含如下內容:線性和非線性的圖像濾波、圖像的幾何變換、圖像轉換、直方圖相關、結構分析和形狀描述、運動分析和對象跟蹤、特征檢測、目標檢測等。

當實例運行之后,單擊“顯示原始圖像”按鈕,原始圖像的效果如圖1(a)所示。單擊“在圖像上添加文本”按鈕,在圖像上添加文本(OpenCV)之后的效果如圖1(b)所示。

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

?

02、實現(xiàn)代碼

public class MainActivity extends Activity {
 ImageView myImageView;
 Bitmap myBitmap;
 static{ System.loadLibrary("opencv_java3");}               //加載OpenCV庫
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  myImageView = (ImageView) findViewById(R.id.myImageView);
  myBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.myimage1);
 }
 public void onClickButton1(View v) {       //響應單擊按鈕“顯示原始圖像”
  myImageView.setImageBitmap(myBitmap);
 }
 public void onClickButton2(View v) {     //響應單擊按鈕“在圖像上添加文本”
  Bitmap myNewBitmap=Bitmap.createBitmap(myBitmap.getWidth(),
          myBitmap.getHeight(),Bitmap.Config.RGB_565); //根據(jù)原始圖像創(chuàng)建空Bitmap
  Mat myMat=new Mat();
  Utils.bitmapToMat(myBitmap,myMat);                //將原始圖像保存至myMat
  Point myPoint=new Point(300, 700);                //定義繪制文本的起始位置
  Scalar myScalar=new Scalar(255,0,0,255);              //設置繪制文本的顏色
  //在圖像上添加文本(僅支持英文、符號等,中文暫不支持)
  Imgproc.putText(myMat,"OpenCV",myPoint,
          Core.FONT_HERSHEY_COMPLEX,4,myScalar,3);
  //將添加文本之后的圖像輸出至myNewBitmap
  Utils.matToBitmap(myMat,myNewBitmap);
  //通過ImageView控件顯示疊加文本之后的圖像
  myImageView.setImageBitmap(myNewBitmap);
 }
}

03、代碼說明

上面這段代碼在MyCode\MySampleK31\app\src\main\java\com\bin\luo\mysample\ MainActivity.java文件中。在這段代碼中,Imgproc的putText()方法用于在圖像上添加文字(字母),該方法的語法聲明如下:

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

其中,參數(shù)Mat img表示待繪制的圖像;參數(shù)String text表示待繪制的文字;參數(shù)Point org表示文字的起點坐標;參數(shù)int fontFace表示字體;參數(shù)double fontScale表示文字大小因子,值越大文字越大;參數(shù)Scalar color表示文字顏色;參數(shù)int thickness表示文字線條寬度。

Utils.bitmapToMat(myBitmap,myMat)用于將Bitmap輸出到Mat,該方法的語法聲明如下:?

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

其中,參數(shù)Bitmap bmp表示源Bitmap,支持ARGB_8888和RGB_565像素類型;參數(shù)Mat mat表示目標Mat,默認類型是CV_8UC4類型,大小和Bitmap一樣,通道順序為RGBA。

Utils.matToBitmap(myMat,myNewBitmap)用于將Mat輸出到Bitmap,該方法的語法聲明如下:?

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

其中,參數(shù)Mat mat表示源Mat,支持CV_8UC1,CV_8UC3或CV_8UC4類型;參數(shù)Bitmap bmp表示目標Bitmap,支持ARGB_8888或RGB_565類型。

static{ System.loadLibrary("opencv_java3");}表示加載OpenCV庫。默認情況下,在Android中使用OpenCV需要導入相關的庫文件,具體操作步驟如下。?

(1) 從https://opencv.org/releases.html頁面中單擊Android pack超鏈接,稍等一會兒即可彈出“新建下載任務”對話框,然后在該對話框中單擊“下載”按鈕,執(zhí)行下載操作,如圖2所示。在下載完成之后解壓文件即可。在此實例中,可以忽略此步驟,直接從源代碼中復制openCVLibrary345Copy文件夾到項目即可。

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

?

(2) 在Android Studio菜單上依次選擇File\New\Import Module...,彈出Import Module from Source對話框。在該對話框中單擊“Source directory:”右端的文件夾按鈕,然后選擇openCVLibrary345Copy文件夾,會出現(xiàn)錯誤(重復)提示。直接在“Module name:”輸入框中將openCVLibrary345Copy修改為openCVLibrary345,錯誤提示消失,如圖3所示。再單擊Finish按鈕即可。

開發(fā)安卓app,用到opencv,安卓開發(fā),android,opencv,計算機視覺

?(3) 按照如下粗體字所示修改MyCode\MySampleK31\app\build.gradle文件。完成之后同步(Sync Now)即可。

apply plugin: 'com.android.application'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.bin.luo.mysample"
        minSdkVersion 27
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {  main { jniLibs.srcDirs = ['libs'] } }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    implementation project(':openCVLibrary345')
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

?(4) 復制MyCode\MySampleK31\app\libs文件夾下的所有內容到(用戶的)項目中即可。該文件夾及其子文件夾的文件與手機CPU的類型有關,缺少這些文件在編譯或運行時會報錯或無響應。

特別說明?/

在測試前必須從MyCode\MySampleK31\app\libs文件夾復制該文件夾中的所有子文件夾及其文件到(用戶的)項目的libs文件夾。

04、補充說明

在測試代碼時,必須保持網(wǎng)絡暢通。文章來源地址http://www.zghlxwxcb.cn/news/detail-777303.html

到了這里,關于Android App開發(fā)超實用實例 | OpenCV在Android手機實現(xiàn)在圖像上添加文本的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包