欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

蘋果開發(fā)語(yǔ)言、C++混合編譯調(diào)用openCV的方法及系統(tǒng)與流程

文檔序號(hào):11582229閱讀:264來(lái)源:國(guó)知局

本發(fā)明涉及互聯(lián)網(wǎng)移動(dòng)端應(yīng)用開發(fā)領(lǐng)域,具體是涉及一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的方法及系統(tǒng)。



背景技術(shù):

在移動(dòng)端的app(application,應(yīng)用)中,很多時(shí)候需要用到圖像識(shí)別,例如人臉識(shí)別,面部的某一個(gè)部位的識(shí)別,在這些臉部識(shí)別的時(shí)候,可能需要調(diào)用opencv(opensourcecomputervisionlibrary,開放源代碼計(jì)算機(jī)視覺類庫(kù))的庫(kù),為了實(shí)現(xiàn)人臉識(shí)別或者其他的圖像識(shí)別,在ios(蘋果移動(dòng)設(shè)備操作系統(tǒng))開發(fā)中需要用到oc(蘋果開發(fā)語(yǔ)言)和c++混合編譯調(diào)用opencv。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的方法及系統(tǒng),實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。

本發(fā)明提供一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的方法,包括以下步驟:

a、在蘋果電腦終端上安裝套件管理器,配置圖像處理庫(kù)環(huán)境,將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾;將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像;

b、使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。

在上述技術(shù)方案的基礎(chǔ)上,步驟a中,所述將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像的過程如下:

獲取蘋果開發(fā)語(yǔ)言的參考圖像;

創(chuàng)建一個(gè)顏色空間類型的對(duì)象;

創(chuàng)建一個(gè)c++類型的圖像iplimage,記錄圖像iplimage的寬和高;

創(chuàng)建一個(gè)圖像上下文;

使用圖像上下文繪制函數(shù)處理圖像上下文;

對(duì)圖像上下文中的內(nèi)存進(jìn)行釋放;

釋放創(chuàng)建的顏色空間類型的對(duì)象;

使用圖像處理庫(kù)中的圖像創(chuàng)建函數(shù),創(chuàng)建一個(gè)c++類型的圖像對(duì)象ret;

調(diào)用圖像處理庫(kù)中的顏色處理函數(shù),對(duì)c++類型的圖像對(duì)象ret進(jìn)行處理;返回c++類型的圖像對(duì)象ret的處理結(jié)果。

在上述技術(shù)方案的基礎(chǔ)上,所述圖像上下文繪制函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是圖像上下文;第二個(gè)參數(shù)是圖像坐標(biāo)值,圖像坐標(biāo)值包含圖像iplimage的起始位置的x坐標(biāo)值、起始位置的y坐標(biāo)值、圖像iplimage的寬和高;第三個(gè)參數(shù)是蘋果開發(fā)語(yǔ)言的參考圖像。

在上述技術(shù)方案的基礎(chǔ)上,所述顏色處理函數(shù)有1個(gè)參數(shù):步驟a中創(chuàng)建的c++類型的圖像iplimage。

在上述技術(shù)方案的基礎(chǔ)上,步驟b中,所述圖像加載函數(shù)有4個(gè)參數(shù):第一個(gè)參數(shù)是xml文件的路徑,后面的三個(gè)參數(shù)都默認(rèn)為0。

本發(fā)明還提供一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的系統(tǒng),該系統(tǒng)包括配置單元、轉(zhuǎn)換單元、加載單元,其中:

配置單元用于:在蘋果電腦終端上安裝套件管理器,配置圖像處理庫(kù)環(huán)境,將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾;

轉(zhuǎn)換單元用于:將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像;

加載單元用于:使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。

在上述技術(shù)方案的基礎(chǔ)上,所述轉(zhuǎn)換單元將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像的過程如下:

獲取蘋果開發(fā)語(yǔ)言的參考圖像;

創(chuàng)建一個(gè)顏色空間類型的對(duì)象;

創(chuàng)建一個(gè)c++類型的圖像iplimage,記錄圖像iplimage的寬和高;

創(chuàng)建一個(gè)圖像上下文;

使用圖像上下文繪制函數(shù)處理圖像上下文;

對(duì)圖像上下文中的內(nèi)存進(jìn)行釋放;

釋放創(chuàng)建的顏色空間類型的對(duì)象;

使用圖像處理庫(kù)中的圖像創(chuàng)建函數(shù),創(chuàng)建一個(gè)c++類型的圖像對(duì)象ret;

調(diào)用圖像處理庫(kù)中的顏色處理函數(shù),對(duì)c++類型的圖像對(duì)象ret進(jìn)行處理;返回c++類型的圖像對(duì)象ret的處理結(jié)果。

在上述技術(shù)方案的基礎(chǔ)上,所述圖像上下文繪制函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是圖像上下文;第二個(gè)參數(shù)是圖像坐標(biāo)值,圖像坐標(biāo)值包含圖像iplimage的起始位置的x坐標(biāo)值、起始位置的y坐標(biāo)值、圖像iplimage的寬和高;第三個(gè)參數(shù)是蘋果開發(fā)語(yǔ)言的參考圖像。

在上述技術(shù)方案的基礎(chǔ)上,所述顏色處理函數(shù)有1個(gè)參數(shù):所述轉(zhuǎn)換單元?jiǎng)?chuàng)建的c++類型的圖像iplimage。

在上述技術(shù)方案的基礎(chǔ)上,所述圖像加載函數(shù)有4個(gè)參數(shù):第一個(gè)參數(shù)是xml文件的路徑,后面的三個(gè)參數(shù)都默認(rèn)為0。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:

(1)本發(fā)明在蘋果電腦終端上安裝套件管理器,配置圖像處理庫(kù)環(huán)境,將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾;將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像;使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。本發(fā)明解決了oc、c++混合編譯調(diào)用opencv中的環(huán)境配置、uiimage和iplimage*類型的轉(zhuǎn)換、xml文件的加載幾個(gè)核心問題,就能夠很容易地實(shí)現(xiàn)oc,c++混合編譯調(diào)用opencv。

(2)本發(fā)明將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像,實(shí)現(xiàn)了將uiimage類型的圖像轉(zhuǎn)換為iplimage*類型的圖像,方便加載,使uiimage類型的圖像都可以被c++函數(shù)處理。

(3)本發(fā)明使用圖像上下文繪制函數(shù)cgcontextdrawimage,處理創(chuàng)建的圖像上下文,跟現(xiàn)有技術(shù)相比,本發(fā)明操作圖像上下文,更接近底層,轉(zhuǎn)換效率更高。

(4)本發(fā)明使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。本發(fā)明能夠在c++文件中加載oc工程里面的xml文件,實(shí)現(xiàn)兩者的橋接,c++文件可以很方便地加載xml文件。

附圖說明

圖1是本發(fā)明實(shí)施例中蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的方法的流程圖。

具體實(shí)施方式

下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。

參見圖1所示,本發(fā)明實(shí)施例提供一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的方法,包括以下步驟:

a、在蘋果電腦終端上安裝套件管理器,配置圖像處理庫(kù)環(huán)境,將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾;將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像;

b、使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。圖像加載函數(shù)有4個(gè)參數(shù):第一個(gè)參數(shù)是xml文件的路徑,后面的三個(gè)參數(shù)都默認(rèn)為0。

步驟a中,將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像的過程如下:

獲取蘋果開發(fā)語(yǔ)言的參考圖像;

創(chuàng)建一個(gè)顏色空間類型的對(duì)象;

創(chuàng)建一個(gè)c++類型的圖像iplimage,記錄圖像iplimage的寬和高;

創(chuàng)建一個(gè)圖像上下文;

使用圖像上下文繪制函數(shù)處理圖像上下文;圖像上下文繪制函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是圖像上下文;第二個(gè)參數(shù)是圖像坐標(biāo)值,圖像坐標(biāo)值包含圖像iplimage的起始位置的x坐標(biāo)值、起始位置的y坐標(biāo)值、圖像iplimage的寬和高;第三個(gè)參數(shù)是蘋果開發(fā)語(yǔ)言的參考圖像;

對(duì)圖像上下文中的內(nèi)存進(jìn)行釋放;

釋放創(chuàng)建的顏色空間類型的對(duì)象;

使用圖像處理庫(kù)中的圖像創(chuàng)建函數(shù),創(chuàng)建一個(gè)c++類型的圖像對(duì)象ret;

調(diào)用圖像處理庫(kù)中的顏色處理函數(shù),對(duì)c++類型的圖像對(duì)象ret進(jìn)行處理;返回c++類型的圖像對(duì)象ret的處理結(jié)果。顏色處理函數(shù)有1個(gè)參數(shù):步驟a中創(chuàng)建的c++類型的圖像iplimage。

本發(fā)明還提供一種蘋果開發(fā)語(yǔ)言、c++混合編譯調(diào)用opencv的系統(tǒng),該系統(tǒng)包括配置單元、轉(zhuǎn)換單元、加載單元,其中:

配置單元用于:在蘋果電腦終端上安裝套件管理器,配置圖像處理庫(kù)環(huán)境,將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾;

轉(zhuǎn)換單元用于:將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像;

加載單元用于:使用蘋果路徑獲取函數(shù)獲取項(xiàng)目工程文件目錄下面的可擴(kuò)展標(biāo)記語(yǔ)言xml文件的路徑,使用圖像處理庫(kù)中的圖像加載函數(shù)加載xml文件,對(duì)xml文件的路徑執(zhí)行ascii編碼,實(shí)現(xiàn)蘋果開發(fā)語(yǔ)言oc、c++混合編譯調(diào)用opencv。圖像加載函數(shù)有4個(gè)參數(shù):第一個(gè)參數(shù)是xml文件的路徑,后面的三個(gè)參數(shù)都默認(rèn)為0。

轉(zhuǎn)換單元將蘋果開發(fā)語(yǔ)言oc類型的圖像轉(zhuǎn)換為c++類型的圖像的過程如下:

獲取蘋果開發(fā)語(yǔ)言的參考圖像;

創(chuàng)建一個(gè)顏色空間類型的對(duì)象;

創(chuàng)建一個(gè)c++類型的圖像iplimage,記錄圖像iplimage的寬和高;

創(chuàng)建一個(gè)圖像上下文;

使用圖像上下文繪制函數(shù)處理圖像上下文;圖像上下文繪制函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是圖像上下文;第二個(gè)參數(shù)是圖像坐標(biāo)值,圖像坐標(biāo)值包含圖像iplimage的起始位置的x坐標(biāo)值、起始位置的y坐標(biāo)值、圖像iplimage的寬和高;第三個(gè)參數(shù)是蘋果開發(fā)語(yǔ)言的參考圖像;

對(duì)圖像上下文中的內(nèi)存進(jìn)行釋放;

釋放創(chuàng)建的顏色空間類型的對(duì)象;

使用圖像處理庫(kù)中的圖像創(chuàng)建函數(shù),創(chuàng)建一個(gè)c++類型的圖像對(duì)象ret;

調(diào)用圖像處理庫(kù)中的顏色處理函數(shù),對(duì)c++類型的圖像對(duì)象ret進(jìn)行處理;返回c++類型的圖像對(duì)象ret的處理結(jié)果。顏色處理函數(shù)有1個(gè)參數(shù):所述轉(zhuǎn)換單元?jiǎng)?chuàng)建的c++類型的圖像iplimage。

下面通過具體函數(shù)來(lái)進(jìn)行說明。

一、配置opencv

在oc中調(diào)用opencv的庫(kù),需要對(duì)opencv的調(diào)用環(huán)境進(jìn)行配置。

(1)在蘋果電腦mac終端上安裝套件管理器;

(2)安裝wget,wget是一個(gè)從網(wǎng)絡(luò)上自動(dòng)下載文件的自由工具,支持通過http、https、ftp三個(gè)最常見的tcp/ip協(xié)議下載;

(3)安裝cmake,cmake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯過程);

(4)讓brew下載opencv。

經(jīng)過上述步驟,opencv的環(huán)境就配置好了,即完成了配置圖像處理庫(kù)環(huán)境。

步驟一的優(yōu)點(diǎn):本步驟完成了使用opencv的前期的環(huán)境配置準(zhǔn)備工作。

二、將c++庫(kù)中以cpp結(jié)尾的文件修改為以.mm結(jié)尾。

三、c++編譯環(huán)境和蘋果開發(fā)語(yǔ)言oc環(huán)境之間的圖像差異轉(zhuǎn)換:

c++處理的是c++類型iplimage*的圖像,但是,蘋果開發(fā)語(yǔ)言oc從相機(jī)和相冊(cè)獲取的是蘋果開發(fā)語(yǔ)言類型uiimage的圖像,兩者的圖像類型不一致,因此,需要將蘋果開發(fā)語(yǔ)言類型uiimage的圖像轉(zhuǎn)換為c++類型iplimage*的圖像。

轉(zhuǎn)換函數(shù)是+(iplimage*)converttoiplimage:(uiimage*)image,該函數(shù)的編寫過程如下:

(1)獲取到這個(gè)函數(shù)傳入的蘋果開發(fā)語(yǔ)言的圖像image,圖像image的屬性為參考圖像imageref,imageref的類型為cgimageref;

(2)使用函數(shù)語(yǔ)句cgcolorspacecreatedevicergb(),創(chuàng)建一個(gè)顏色空間類型cgcolorspaceref的對(duì)象colorspace;

(3)使用函數(shù)cvcreateimage(cvsize(image.size.width,image.size.height),ipl_depth_8u,4),創(chuàng)建一個(gè)c++類型iplimage*的圖像iplimage,創(chuàng)建圖像的過程中需要記錄cvcreateimage的第一個(gè)參數(shù)是:圖像iplimage的寬image.size.width和高image.size.height,后面需要傳入的兩個(gè)參數(shù)是ipl_depth_8u和4;

(4)使用函數(shù)cgbitmapcontextcreate(),創(chuàng)建一個(gè)cgcontextref類型的圖像上下文contextref;

(5)使用圖像上下文繪制函數(shù)cgcontextdrawimage,處理步驟(4)中創(chuàng)建的圖像上下文contextref;

圖像上下文繪制函數(shù)cgcontextdrawimage有3個(gè)參數(shù):

第一個(gè)參數(shù)是:圖像上下文contextref;

第二個(gè)參數(shù)是:cgrectmake類型的圖像坐標(biāo)值,cgrectmake類型的圖像坐標(biāo)值包含圖像iplimage的起始位置的x坐標(biāo)值,起始位置的y坐標(biāo)值,圖像iplimage的寬和高;

第三個(gè)參數(shù)是:步驟(1)中的參考圖像imageref;

(6)對(duì)圖像上下文中的內(nèi)存進(jìn)行釋放:使用函數(shù)cgcontextrelease,圖像上下文釋放contextref的內(nèi)存;

(7)使用函數(shù)cgcolorspacerelease,釋放步驟(2)中創(chuàng)建的顏色空間類型的對(duì)象colorspace;

(8)使用圖像處理庫(kù)中的圖像創(chuàng)建函數(shù)cvcreateimage,創(chuàng)建一個(gè)c++類型iplimage*的圖像對(duì)象ret;

(9)調(diào)用圖像處理庫(kù)中的顏色處理函數(shù)cvcvtcolor,對(duì)c++類型的圖像對(duì)象ret進(jìn)行處理;

cvcvtcolor函數(shù)有2個(gè)參數(shù):

第一個(gè)參數(shù)是:步驟(3)中創(chuàng)建的c++類型iplimage*的圖像iplimage;

第二個(gè)參數(shù)是:步驟(8)中創(chuàng)建的c++類型iplimage*的圖像對(duì)象ret;

(10)返回步驟(9)中c++類型iplimage*的圖像對(duì)象ret的處理結(jié)果,這個(gè)ret就是裝換后的c++類型iplimage*的對(duì)象,是c++可以處理的類型的對(duì)象。

步驟三的優(yōu)點(diǎn):實(shí)現(xiàn)了將uiimage類型的圖像轉(zhuǎn)換為iplimage*類型的圖像,方便加載,使uiimage類型的圖像都可以被c++函數(shù)處理。跟現(xiàn)有技術(shù)比:步驟(5)中操作圖像上下文,更接近底層,轉(zhuǎn)換效率更高。

四、xml加載

c++加載xml(extensiblemarkuplanguage,可擴(kuò)展標(biāo)記語(yǔ)言)的方法和oc語(yǔ)言加載xml的方法是不一樣,在oc中不能使用c++的方法加載xml,在oc中使用下述方法加載xml文件:

(1)使用蘋果路徑獲取函數(shù)pathforresource獲取到項(xiàng)目工程文件目錄下面的xml文件的路徑path;

(2)使用圖像處理庫(kù)中的圖像加載函數(shù)cvload加載xml,對(duì)xml文件的路徑path執(zhí)行ascii編碼:nsasciistringencoding編碼,nsasciistringencoding編碼可以有效處理路徑中的char*轉(zhuǎn)換為nsstring型,方便oc讀取這個(gè)路徑的文件。

圖像加載函數(shù)cvload有4個(gè)參數(shù):第一個(gè)參數(shù)是步驟(1)中xml文件的路徑path,后面的三個(gè)參數(shù)使用默認(rèn)的,都傳入0,這樣就可以加載xml。

步驟四的優(yōu)點(diǎn):能夠在c++文件中加載oc工程里面的xml文件,實(shí)現(xiàn)兩者的橋接,c++文件中可以很方便地加載xml文件。

經(jīng)過上述步驟的處理,解決了oc、c++混合編譯調(diào)用opencv中的環(huán)境配置、uiimage和iplimage*類型的轉(zhuǎn)換、xml文件的加載幾個(gè)核心問題,就能夠很容易地實(shí)現(xiàn)oc,c++混合編譯調(diào)用opencv。

本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。

說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
达日县| 武强县| 新建县| 丹阳市| 镇巴县| 尤溪县| 迁安市| 琼中| 潼关县| 隆尧县| 遂宁市| 田阳县| 涿鹿县| 余江县| 东海县| 习水县| 新巴尔虎右旗| 南涧| 个旧市| 三都| 陵水| 万盛区| 边坝县| 菏泽市| 肃宁县| 灵川县| 永安市| 汨罗市| 房山区| 双城市| 剑河县| 泰州市| 柘荣县| 武乡县| 闽清县| 镇远县| 宁乡县| 灵山县| 固镇县| 自贡市| 新民市|