亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android及OpenCV平臺(tái)的形狀及顏色識(shí)別系統(tǒng)設(shè)計(jì)

        2019-09-07 08:00:34任志敏
        山西電子技術(shù) 2019年4期
        關(guān)鍵詞:類庫(kù)調(diào)用圖像處理

        任志敏

        (常州紡織服裝職業(yè)技術(shù)學(xué)院機(jī)電學(xué)院,江蘇 常州 213164)

        0 引言

        隨著無(wú)人駕駛、人工智能及5G技術(shù)的飛速發(fā)展,越來(lái)越多的智能新技術(shù)應(yīng)用產(chǎn)品深入尋常百姓家。不管是哪一種產(chǎn)品,少不了Android系統(tǒng)的身影。作為智能化產(chǎn)品的標(biāo)志之一,類人的視覺(jué)系統(tǒng)是必不可少的,其中對(duì)顏色和形狀的識(shí)別又是最基本的。因此,本文將著重解決android平臺(tái)下顏色和形狀識(shí)別的問(wèn)題。

        1 方案設(shè)計(jì)

        關(guān)于顏色及形狀的識(shí)別在PC機(jī)平臺(tái)下已經(jīng)比較成熟,但是在Android平臺(tái)下受制于軟硬件系統(tǒng)的局限性,該技術(shù)有待進(jìn)一步研究。

        Android系統(tǒng)的內(nèi)核是由C/C++設(shè)計(jì)的Linux系統(tǒng),其上層支持Java和Kotlin編程語(yǔ)言,目前國(guó)內(nèi)主流使用的仍舊是Java。第一種方案是直接在Android平臺(tái)上使用Java語(yǔ)言實(shí)現(xiàn)顏色和形狀識(shí)別算法,但是比起C/C++語(yǔ)言,使用Java語(yǔ)言進(jìn)行圖像處理的效率沒(méi)那么高,因此,直接使用Java語(yǔ)言進(jìn)行圖像處理不是最佳的選擇。第二種方案是采用已有的成熟的圖像處理庫(kù),在Android平臺(tái)下調(diào)用庫(kù)實(shí)現(xiàn)顏色和形狀識(shí)別?,F(xiàn)有的主流圖像處理庫(kù)有OpenCv,CxImage,F(xiàn)reeImage,AForge等。

        OpenCV的全稱是Open Source Computer Vision Library,是一個(gè)基于BSD許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),又名“開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)”。OpenCV可運(yùn)行在Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux和Mac OS等平臺(tái)。OpenCV提供了各種圖像處理算法,用戶通過(guò)組合算法實(shí)現(xiàn)需要的功能。

        CxImage類庫(kù)是一個(gè)優(yōu)秀的圖像操作類庫(kù)。它可以快捷地存取、顯示、轉(zhuǎn)換各種圖像。對(duì)Windows、MFC支持極好,支持圖像的多種操作(線性濾波、中值濾波、直方圖操作、旋轉(zhuǎn)縮放、區(qū)域選取、閾值處理、膨脹腐蝕、alpha混合等)。

        FreeImage也是一個(gè)開(kāi)放源碼庫(kù)項(xiàng)目,為開(kāi)發(fā)人員提供支持當(dāng)今多媒體應(yīng)用程序所需的流行圖形圖像格式,如PNG、BMP、JPEG、TIFF等。FreeImage易于使用,速度快,多線程安全,兼容所有32位或64位版本的Windows,也支持Linux和Mac OS X。

        AForge.NET是一個(gè)專門為開(kāi)發(fā)者和研究者基于C#框架設(shè)計(jì)的,該框架提供了不同的類庫(kù)和關(guān)于類庫(kù)的資源,還有很多應(yīng)用程序例子,包括計(jì)算機(jī)視覺(jué)與人工智能,圖像處理,神經(jīng)網(wǎng)絡(luò),遺傳算法,機(jī)器學(xué)習(xí),機(jī)器人等領(lǐng)域。

        綜合比較,OpenCV因其優(yōu)秀的跨平臺(tái)性,已經(jīng)是目前PC平臺(tái)下最主流的圖像處理庫(kù),并已經(jīng)通過(guò)了大量工程應(yīng)用的考驗(yàn),因此,本文選擇OpenCV為顏色形狀識(shí)別的支持庫(kù)。OpenCV提供了基于Android平臺(tái)的SDK,支持3種方式接入Android。

        第一種方式適用于對(duì)OpenCVc++不熟悉的用戶,不需要直接調(diào)用C++方案,因?yàn)楣俜教峁┑腟DK已經(jīng)用JNI全部封裝好了。用戶只需要安裝好JDK、AndroidStudio與NDK環(huán)境。

        第二種方式是使用OpenCVSDK提供的C++頭文件、.so動(dòng)態(tài)庫(kù)和.a靜態(tài)庫(kù),用戶自己封裝JNI,該方式使用的效率會(huì)比第一種方法高一些,且可以100%使用OpenCV的接口[1]。

        第三種方式通過(guò)OpenCV的源碼,重新編譯成Android SDK庫(kù),這樣的好處是能獲取到OpenCV最新的功能,缺點(diǎn)是編譯較為復(fù)雜,且新的代碼或許會(huì)存在不兼容與錯(cuò)誤。

        綜合比較以上三種方式的優(yōu)缺點(diǎn),本文使用第二種方式,通過(guò)JNI調(diào)用OpenCV提供的API,使用C++語(yǔ)言操作OpenCV的接口。

        2 設(shè)計(jì)過(guò)程

        為了驗(yàn)證顏色形狀識(shí)別的可行性與可靠性,本文設(shè)定的識(shí)別目標(biāo)為4種顏色(紅色、綠色、黃色和藍(lán)色),5種形狀(長(zhǎng)方形、正方形、三角形、多邊形和圓)。如圖1所示。

        圖1 顏色形狀識(shí)別樣圖

        第一步建立Androidstudio平臺(tái)下OpenCv的JNI開(kāi)發(fā)環(huán)境[2]。本文使用的版本是Android Studio3.2和OpenCv3.4.2-android-sdk。如圖2所示。

        第二步:設(shè)計(jì)APP(Java語(yǔ)言)。如圖3所示。

        一共設(shè)計(jì)了4個(gè)控件,包括2個(gè)Button,1個(gè)ImageView,1個(gè)TextView?!斑x擇…”按鈕用于打開(kāi)Android系統(tǒng)的圖片目錄,選擇需要識(shí)別的圖片。ImageView用于顯示選擇的待識(shí)別圖片。“形狀顏色識(shí)別”按鈕用于執(zhí)行具體的識(shí)別程序。APP底部的TextView控件用于顯示識(shí)別的結(jié)果。

        圖2 android studio及opencv開(kāi)發(fā)環(huán)境

        圖3 顏色形狀識(shí)別APP布局文件

        因?yàn)橐x取Android的系統(tǒng)圖片目錄,需要首先在AndroidManifest.xml文件中設(shè)置允許讀外部存儲(chǔ)器權(quán)限。即:

        若使用的androidSDK是23及以上版本,還需要在程序中設(shè)置運(yùn)行時(shí)允許讀權(quán)限。

        因?yàn)榇蜷_(kāi)Android系統(tǒng)圖片目錄是一個(gè)新的Activity,該Activity需要向MainActivity回傳圖片路徑信息,因此使用startActivityForResult(Intent intent, int requestCode)方法打開(kāi)新的Activity,并把圖片文件回傳給MainActivity中的變量fileUri。設(shè)計(jì)顏色形狀識(shí)別函數(shù)

        private void colorShapeDector() {

        Mat image = Imgcodecs.imread(fileUri.getPath());

        if(image.empty()) {

        return;

        }

        strResult = DetectShapeColor(image.getNativeObjAddr());

        tvResult.setText(strResult);

        調(diào)用imread獲取待識(shí)別圖片的數(shù)據(jù)元素。通過(guò)image.getNativeObjAddr()方法把Java端獲得的路徑轉(zhuǎn)換為OpenCV端可識(shí)別的路徑。

        第三步:設(shè)計(jì)顏色形狀識(shí)別程序(C++語(yǔ)言)

        在native-lib.cpp聲明識(shí)別函數(shù)名稱、參數(shù)和返回值。

        extern "C" JNIEXPORT jstring JNICALL

        Java_com_example_sidneyren_firstdemo_MainActivity_DetectShapeColor(

        JNIEnv *env,

        jobject /* this */,

        jlong addrInputRgbaImage

        )

        S1:為了增強(qiáng)識(shí)別的魯棒性,轉(zhuǎn)換圖片的顏色空間,由RGB轉(zhuǎn)換為HSV。cvtColor(img,imgHSV,COLOR_BGR2HSV);其中img為原始圖像,imgHSV為轉(zhuǎn)換后的圖像。

        S2:設(shè)置待識(shí)別顏色的HSV三個(gè)分量的上下限閾值,以綠色為例,greenLowH=35,greenHighH=77,greenLowS=43,greenHighS=255,greenLowV=46,greenHighV=255。調(diào)用inRange(imgHSV,Scalar(greenLowH,greenLowS,greenLowV),Scalar(greenHighH,greenHighS,greenHighV),imgThresholded)函數(shù)對(duì)imgHSV圖像進(jìn)行分割,位于綠色HSV上下限區(qū)間內(nèi)的像素點(diǎn)設(shè)置為255,不在該范圍內(nèi)的像素點(diǎn)設(shè)置為0,即生成一個(gè)二值化圖像[3],分割后生成的圖像imgThresholded如圖4所示。

        圖4 分割后的圖像

        S3:調(diào)用形態(tài)學(xué)操作函數(shù):element=getStructuringElement(MORPH_RECT, Size(5,5));對(duì)圖像進(jìn)行腐蝕和膨脹。調(diào)用函數(shù)morphologyEx對(duì)圖像進(jìn)行開(kāi)閉操作,并提取輪廓,處理后的圖像如圖5所示。

        圖5 腐蝕、膨脹后的圖像

        S4:設(shè)計(jì)形狀識(shí)別的類ShapeDetector。

        調(diào)用arcLength函數(shù)計(jì)算封閉輪廓的周長(zhǎng)。調(diào)用approxPolyDP函數(shù)對(duì)圖像輪廓點(diǎn)進(jìn)行多邊形擬合,從而獲得輸出的多邊形點(diǎn)集,通過(guò)判斷多邊形點(diǎn)集的數(shù)量判斷具體是哪種形狀。

        S5:遍歷圖像中所有輪廓,調(diào)用形狀識(shí)別類,即可識(shí)別具體某一種顏色塊的所有形狀。

        S6:設(shè)置紅色、黃色和藍(lán)色的HSV上下限閾值,重復(fù)步驟S3~S5即可識(shí)別4種顏色塊的形狀。

        3 結(jié)論

        本文一共使用100張各種形狀的圖片來(lái)驗(yàn)證APP的識(shí)別準(zhǔn)確率,圖片分成形狀和顏色不連接的部分和連接的部分,結(jié)果形狀和顏色均不連接的圖片識(shí)別準(zhǔn)確率為100%,形狀和顏色連接的圖片有一張未能準(zhǔn)確識(shí)別,總體識(shí)別準(zhǔn)確率為99%。

        猜你喜歡
        類庫(kù)調(diào)用圖像處理
        用Java編寫客戶機(jī)/服務(wù)器端應(yīng)用程序
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        Python在數(shù)據(jù)可視化中的應(yīng)用
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:20
        數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革方案和應(yīng)用效果
        軟件工程(2017年12期)2018-01-29 17:35:55
        數(shù)據(jù)結(jié)構(gòu)可視化類庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)
        模糊圖像處理,刑事偵查利器
        圖像處理技術(shù)的實(shí)戰(zhàn)應(yīng)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        国产成人久久精品一区二区三区 | 欧美大香线蕉线伊人久久| 国产桃色在线成免费视频| 日本久久一区二区三区高清| 日本一区二区在线播放视频 | 伊人狼人影院在线视频| 亚洲国产成人久久精品一区| 女人被男人爽到呻吟的视频| 国产精品熟女一区二区| av无码天堂一区二区三区| 一个人看的在线播放视频| 亚洲国产中文字幕一区| 精品国产麻豆免费人成网站| 中出内射颜射骚妇| 日韩免费高清视频网站| 国产风骚主播视频一区二区| 国产白浆在线免费观看| 屁屁影院ccyy备用地址| 激情97综合亚洲色婷婷五| 特黄三级一区二区三区| 国产一级黄色片在线播放| 国产亚洲精品第一综合另类| 明星性猛交ⅹxxx乱大交| 免费国产黄片视频在线观看| 日本熟女视频一区二区三区| 中国久久久一级特黄久久久| 女人被弄到高潮的免费视频| 久久婷婷综合色丁香五月| 女同性恋亚洲一区二区| 久久久精品国产免费看| 国产强被迫伦姧在线观看无码| 日日av拍夜夜添久久免费| 97无码人妻一区二区三区蜜臀 | 九九99无码精品视频在线观看| 久久久久亚洲AV无码专区一区| 狼人精品剧情av在线观看| 亚洲精品国产成人片| 日韩好片一区二区在线看| 国产一区二区三区最新视频| 网站在线观看视频一区二区| 亚洲av色香蕉一区二区三区老师|