1.一種將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,包括如下的步驟:
a、初始化連接器的連接參數(shù);
b、初始化Python解釋器,并加載精簡后的dicompyler功能模塊;
c、獲取dicompyler功能模塊的圖像對象,并獲取圖像尺寸以及圖像模式;
d、利用Python提供的C-API間接觸發(fā)數(shù)據(jù)轉(zhuǎn)換函數(shù),將圖像數(shù)據(jù)轉(zhuǎn)換為字符串的形式,并得到經(jīng)過封裝的字符串對象;
e、利用上一步得到的字符串對象以及Python提供的參數(shù)解析函數(shù),提取字符串對象的字符串數(shù)據(jù),并將字符串數(shù)據(jù)讀入到C/C++的內(nèi)存數(shù)組中;
f、將內(nèi)存數(shù)組的圖像數(shù)據(jù)復(fù)制到C++的圖像類里面,根據(jù)獲取的圖像尺寸設(shè)置圖像類的尺寸大小,必要時根據(jù)圖像模式設(shè)置顏色表,最終完成DICOM RT數(shù)據(jù)的讀取。
2.根據(jù)權(quán)利要求1所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟a中,所述的連接參數(shù)就是清單依賴項manifestdependency的參數(shù),包括連接器的類型、名稱、版本處理器架構(gòu)以及公匙的標記。
3.根據(jù)權(quán)利要求1所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟b中,精簡后的dicompyler功能模塊包括dicomparser、dvhdoses和dvhcalc三個模塊,而加載dicompyler功能模塊的步驟,具體包括:
b1、執(zhí)行初始化函數(shù)用以初始化Python解釋器;
b2、判斷Python解釋器是否成功初始化,如果初始化失敗,退出程序;否則,繼續(xù)步驟b3;
b3、執(zhí)行模塊加載函數(shù)用以加載功能模塊,并得到該模塊對象。
4.根據(jù)權(quán)利要求3所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟c中,獲取dicompyler功能模塊的圖像對象的步驟,具體包括:
c1、利用步驟b3得到的模塊對象,提取其中的字典對象;
c2、利用步驟c1得到的字典對象,尋找自定義類的入口,得到一個類接口對象;
c3、實例化步驟c2得到的類接口對象,得到類實例對象;
c4、類實例對象執(zhí)行圖像獲取函數(shù)即得到圖像對象。
5.根據(jù)權(quán)利要求4所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟d中,將圖像數(shù)據(jù)轉(zhuǎn)換為字符串的形式是通過步驟c4所得到的圖像對象的tostring()函數(shù)實現(xiàn)的,該函數(shù)將數(shù)據(jù)封裝到一個字符串對象中;tostring()函數(shù)內(nèi)部實現(xiàn)步驟,具體包括:
d1、根據(jù)字符串對象的數(shù)據(jù)成員以及圖像數(shù)據(jù)的大小,申請一段大小足夠的內(nèi)存塊;
d2、將數(shù)據(jù)復(fù)制到申請的內(nèi)存塊的數(shù)據(jù)區(qū)域。
6.根據(jù)權(quán)利要求1所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟e中,將字符串數(shù)據(jù)讀入到C/C++的內(nèi)存數(shù)組,具體包括如下步驟;
e1、聲明一個指向字符類型的指針;
e2、結(jié)合步驟d所得到的字符串對象以及參數(shù)解析函數(shù),解析字符串對象,解析完畢之后,步驟e1聲明的指針就指向字符串對象的數(shù)據(jù)內(nèi)存;
e3、申請一段大小足夠的內(nèi)存空間,將步驟e1聲明的指針所指向的數(shù)據(jù)復(fù)制到新開辟的內(nèi)存空間。
7.根據(jù)權(quán)利要求1所述的將dicompyler的圖像讀取到C++圖像類的方法,其特征在于,所述的步驟f中,所述的C++的圖像類選用CImage、CBitmap或者QImage,設(shè)置深度值、顏色表,以完成DICOM RT的數(shù)據(jù)讀取。