日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

 OpenCV是一個(gè)基于BSD許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),它可以運(yùn)行在linux、windows、Android和mac OS等操作系統(tǒng)上。OpenCV原本由一系列 C 函數(shù)和少量 C++ 類(lèi)構(gòu)成,同時(shí)提供了Python/ target=_blank class=infotextkey>Python等其他語(yǔ)言的接口,它實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。下面這個(gè)實(shí)例演示了使用OpenCV在Android手機(jī)實(shí)現(xiàn)在圖像上繪制文本。本文提供的OpenCV實(shí)例使用JAVA語(yǔ)言編寫(xiě),并且運(yùn)行在Android手機(jī)上。

01、實(shí)例功能

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

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

 

02、實(shí)現(xiàn)代碼

public class MainActivity extends Activity {
 ImageView myImageView;
 Bitmap myBitmap;
 static{ System.loadLibrary("opencv_java3");}               //加載OpenCV庫(kù)
 @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) {       //響應(yīng)單擊按鈕“顯示原始圖像”
  myImageView.setImageBitmap(myBitmap);
 }
 public void onClickButton2(View v) {     //響應(yīng)單擊按鈕“在圖像上添加文本”
  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);              //設(shè)置繪制文本的顏色
  //在圖像上添加文本(僅支持英文、符號(hào)等,中文暫不支持)
  Imgproc.putText(myMat,"OpenCV",myPoint,
          Core.FONT_HERSHEY_COMPLEX,4,myScalar,3);
  //將添加文本之后的圖像輸出至myNewBitmap
  Utils.matToBitmap(myMat,myNewBitmap);
  //通過(guò)ImageView控件顯示疊加文本之后的圖像
  myImageView.setImageBitmap(myNewBitmap);
 }
}

03、代碼說(shuō)明

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

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

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

其中,參數(shù)Bitmap bmp表示源Bitmap,支持ARGB_8888和RGB_565像素類(lèi)型;參數(shù)Mat mat表示目標(biāo)Mat,默認(rèn)類(lèi)型是CV_8UC4類(lèi)型,大小和Bitmap一樣,通道順序?yàn)镽GBA。

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

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

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

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

 

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

 (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) 復(fù)制MyCode\MySampleK31\app\libs文件夾下的所有內(nèi)容到(用戶(hù)的)項(xiàng)目中即可。該文件夾及其子文件夾的文件與手機(jī)CPU的類(lèi)型有關(guān),缺少這些文件在編譯或運(yùn)行時(shí)會(huì)報(bào)錯(cuò)或無(wú)響應(yīng)。

特別說(shuō)明 /

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

04、補(bǔ)充說(shuō)明

在測(cè)試代碼時(shí),必須保持網(wǎng)絡(luò)暢通。

分享到:
標(biāo)簽:Android
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定