分享 虹軟人臉識別應用開發過程

2021-09-20 06:47:45 字數 2842 閱讀 1091

趁晚上的時間向大家分享一波乾貨。

虹軟的人臉識別是應用與離線開發的,因為不需要網路,所以它的識別速度較快。好了,廢話不多說,接下來就開始教大家怎樣使用了。

sourcesets     

}

2.接下裡就需要進行開發了。就拿人臉檢測的功能來說吧,首先需要 對引擎初始化,

我們還需要乙個集合,用來存放我們檢測到的人臉,

listresult = new arraylist();//新建afd_fsdkfacejihe,用於存放識別的人臉資訊
接下來我們就可以進行人臉的檢測了,但是對於**的選取和格式是有要求的,所以我們需要對**進行格式處理一下。

bitmap bitmap1 = decodeimage(path1);//path是**的路徑,先選取**,轉化為bitmap   

byte data1 = getnv21(bitmap1);//再將bitmap轉化為nv21格式的

下面是工具類decodeimage和getnv21的**:

//getnv21 和 decodeimage 是**格式的轉化工具    

public byte getnv21(bitmap mbitmap)

convert.destroy();

return data;

} public static bitmap decodeimage(string path) else if (orientation == exifinte***ce.orientation_rotate_180) else if (orientation == exifinte***ce.orientation_rotate_270)

bitmap temp = bitmap.createbitmap(res, 0, 0, res.getwidth(), res.getheight(), matrix, true);

log.d("com.arcsoft", "check target image:" + temp.getwidth() + "x" + temp.getheight());

if (!temp.equals(res))

return temp;

} catch (exception e)

return null;

}

對格式進行轉化完成後,就開始進行人臉的檢測了。

err = engine1.afd_fsdk_stillimagefacedetection(data1, bitmap1.getwidth(), bitmap1.getheight(), afd_fsdkengine.cp_paf_nv21, result);        log.e("tag", "getbit: " + result.size());
我們可以檢視集合result的size,來確定是否檢測到人臉。

在**的最後,一定要對初始化的引擎進行銷毀處理。不然程式會因為記憶體問題而崩潰。

engine1.afd_fsdk_uninitialfaceengine();

人臉對比是在人臉檢測的基礎上進行的,在一張**上先檢測到人臉的資訊,然後再將人臉的資訊進行比對。

list result = new arraylist();

上面已經介紹了,檢測到的人臉資訊都是存放在result的集合中的,

然後是建立兩個存放人臉點位資訊的類

afr_fsdkface face1 = new afr_fsdkface();

afr_fsdkface face2 = new afr_fsdkface(); 將檢測到的人臉資訊的點位資訊存放到 face類中

//新建兩個afr_fsdkface類,儲存人臉特徵資訊

afr_fsdkface face1 = new afr_fsdkface();

afr_fsdkface face2 = new afr_fsdkface(); //對人臉特徵資訊的檢測

er = engine_camera.afr_fsdk_extractfrfeature(data_image,

bitmap_idcard.getwidth(),

bitmap_idcard.getheight(),

afr_fsdkengine.cp_paf_nv21,

new rect(result_image.get(0).getrect()),

result_image.get(0).getdegree(),

face1);

er = engine_camera.afr_fsdk_extractfrfeature(data,

wid,

hei,

afr_fsdkengine.cp_paf_nv21,

new rect(result_fd.get(0).getrect()),

result_fd.get(0).getdegree(),

face2);

最後的比對的相似度資訊存放在score中, float score_face = score.getscore();

我們可以通過這種方式得到 我們想要的相似度資訊,最後得到的資料是float型別的。

*注意!

在使用**的時候,解析度大小最好是偶數的,不然會發生未知的錯誤。

在進行人臉資訊提取的時候,會耗時,耗時的時長,是根據裝置的cpu處理能力來說的。

分享 虹軟人臉識別應用開發過程

趁晚上的時間向大家分享一波乾貨。虹軟的人臉識別是應用與離線開發的,因為不需要網路,所以它的識別速度較快。好了,廢話不多說,接下來就開始教大家怎樣使用了。sourcesets 2.接下裡就需要進行開發了。就拿人臉檢測的功能來說吧,首先需要 對引擎初始化,我們還需要乙個集合,用來存放我們檢測到的人臉,l...

虹軟人臉識別Android Sample Code

afr fsdkinte ce engine new afr fsdkengine 用來存放提取到的人臉資訊,face 1 是註冊的人臉,face 2 是要識別的人臉 afr fsdkface face1 new afr fsdkface afr fsdkface face2 new afr fsd...

虹軟人臉識別C demo

同理新增附加庫目錄,如下圖所示 附加依賴項 將兩個dll複製到程式執行的目錄裡面 按照上面的步驟配置完環境後,接下來進行測試 的讀取要用到opencv,我就假設大家opencv配置均不存在問題 下面的 為我參考的官方給的一些資料,但是我用的opencv是3.4的,因此程式有些小小的改動,具體可參考如...