国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種圖像參數(shù)傳遞方法及系統(tǒng)的制作方法

      文檔序號:6640982閱讀:222來源:國知局
      一種圖像參數(shù)傳遞方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種圖像參數(shù)傳遞方法及系統(tǒng),所述方法包括:在基于C#開發(fā)的應(yīng)用層中,將原圖像對象保存至內(nèi)存塊中,并獲取原圖像對象的內(nèi)存地址,然后將原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù)一起傳給基于C++的圖像處理模塊;在基于C++開發(fā)的圖像處理模塊中,根據(jù)獲取的原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù),加載內(nèi)存塊中的原圖像信息,并對原圖像進行處理,然后將處理后的圖像信息保存至所述內(nèi)存塊中以覆蓋原圖像信息;在基于C#開發(fā)的應(yīng)用層中,解除內(nèi)存鎖,重新加載內(nèi)存地址中的圖像對象,得到處理后的圖像信息,從而獲取效果圖。本發(fā)明方法及系統(tǒng)提升了圖像處理的整體效率,同時保障了圖像數(shù)據(jù)的完整性與安全性。
      【專利說明】一種圖像參數(shù)傳遞方法及系統(tǒng)

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及一種參數(shù)傳遞方法,尤其是一種圖像參數(shù)傳遞方法及系統(tǒng)。屬于圖像 處理領(lǐng)域。

      【背景技術(shù)】
      [0002] 在目前眾多的編程語言中,C++憑著更接近計算機系統(tǒng)底層的特點,以及其安全 性、簡潔性,在圖像處理上建立了較大的優(yōu)勢,還擁有著成熟的圖像處理類庫,如openCV,這 些優(yōu)點使得C++成為圖像處理的首選;而.NET的C#語言在微軟提供的強大的類庫以及開 發(fā)工具下,能快速的進行應(yīng)用層的開發(fā)。因此在項目中,由C#負(fù)責(zé)開發(fā)應(yīng)用界面,然后調(diào)用 C++開發(fā)的圖像處理模塊進行圖像處理操作,如圖1所示。
      [0003] 在兩個編程語言中,C++常用CBitmap對象保存圖像信息,而C#是用Bitmap對象 保存圖像位圖信息,這兩種對象不是基本數(shù)據(jù)類型,所以不能直接傳遞;而字符信息是通用 的數(shù)據(jù)類型,基于這一點,C#先是用包含原圖像信息的Bitmap對象生成原圖像文件(本地 JPG文件),然后把生成的文件路徑通過字符信息傳入C++,而C++在接收到完整的字符信息 后,根據(jù)這個路徑去讀取相應(yīng)的原圖像文件,再把原圖像轉(zhuǎn)換成自己專屬的CBitmap對象, 這樣就完成了原圖像信息的傳遞,如圖2所示。
      [0004] 在完成原圖像信息傳遞之后,C++開發(fā)的圖像處理模塊會根據(jù)內(nèi)容對原圖像進行 處理,然后將CBitmap對象保存為效果圖文件(本地JPG文件),再通過字符傳遞效果圖路 徑,C#獲得效果圖路徑后便可以通過路徑將文件轉(zhuǎn)換成Bitmap對象,完成整個圖像處理的 流程,如圖3所示。
      [0005] 上述技術(shù)雖然得到較為理想的結(jié)果,但仍然存在如下問題:
      [0006] 1) 一次交互中C#以及C++各要生成一次的本地文件,進行系統(tǒng)磁盤文件的讀寫, 要消耗更多的系統(tǒng)資源,使得總的耗時更長,當(dāng)頻繁的讀寫操作時,可能會由于系統(tǒng)資源的 互斥而導(dǎo)致不可預(yù)知的錯誤;
      [0007] 2)原圖像信息保存成本地本件時,由于編譯器或者開發(fā)語言的差異,可能會引起 一定的圖像信息丟失,無法保證信息的完整傳遞。


      【發(fā)明內(nèi)容】

      [0008] 本發(fā)明的目的是為了解決上述現(xiàn)有技術(shù)的缺陷,提供一種圖像參數(shù)傳遞方法,該 方法提升了圖像處理的整體效率,同時保障了圖像數(shù)據(jù)的完整性與安全性。
      [0009] 本發(fā)明的另一目的在于提供一種圖像參數(shù)傳遞系統(tǒng)。
      [0010] 本發(fā)明的目的可以通過采取如下技術(shù)方案達到:
      [0011] 一種圖像參數(shù)傳遞方法,其特征在于:所述方法通過基于C#開發(fā)的應(yīng)用層和基于 C++開發(fā)的圖像處理模塊實現(xiàn),包括以下步驟:
      [0012] S1、在基于C#開發(fā)的應(yīng)用層中,將原圖像對象保存至內(nèi)存塊中,并獲取原圖像對 象的內(nèi)存地址,然后將原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù)一起傳給基于 C++的圖像處理模塊;
      [0013] S2、在基于C++開發(fā)的圖像處理模塊中,根據(jù)獲取的原圖像對象的內(nèi)存地址以及 原圖像的長度、寬度參數(shù),加載內(nèi)存塊中的原圖像信息,并對原圖像進行處理,然后將處理 后的圖像信息保存至所述內(nèi)存塊中以覆蓋原圖像信息;
      [0014] S3、在基于C#開發(fā)的應(yīng)用層中,解除內(nèi)存鎖,重新加載內(nèi)存地址中的圖像對象,得 到處理后的圖像信息,從而獲取效果圖。
      [0015] 作為一種優(yōu)選方案,步驟Sl所述將原圖像對象保存至內(nèi)存塊中,并獲取原圖像對 象的內(nèi)存地址,具體為:
      [0016] 利用Bitmap類保存原圖像對象,通過Bitmap類中的LockBits方法將原圖像數(shù)據(jù) 以字節(jié)數(shù)組形式保存至內(nèi)存塊中;
      [0017] 通過BitmapData類中的屬性ScanO獲取存放所述字節(jié)數(shù)組的內(nèi)存地址。
      [0018] 作為一種優(yōu)選方案,步驟S2所述根據(jù)獲取的原圖像對象的內(nèi)存地址以及原圖像 的長度、寬度參數(shù),加載內(nèi)存塊中的原圖像信息,具體為:
      [0019] 根據(jù)原圖像的長度、寬度參數(shù),新建OpenCv的Mat對象,該Mat對象用于保存原圖 像信息;
      [0020] 根據(jù)原圖像對象的內(nèi)存地址,通過BasisOperation類中的byte2mat方法加載內(nèi) 存塊中的原圖像信息。
      [0021] 作為一種優(yōu)選方案,步驟S2所述對原圖像進行處理通過BasisOperation類中的 doSomething方法實現(xiàn)相應(yīng)的圖像編輯操作。
      [0022] 作為一種優(yōu)選方案,步驟S2所述將處理后的圖像信息保存至所述內(nèi)存塊中以覆 蓋原圖像信息,通過BasisOperation類中的mat2byte方法實現(xiàn)。
      [0023] 本發(fā)明的另一目的可以通過采取如下技術(shù)方案達到:
      [0024] 一種圖像參數(shù)傳遞系統(tǒng),其特征在于:所述系統(tǒng)通過基于C#開發(fā)的應(yīng)用層和基于 C++開發(fā)的圖像處理模塊實現(xiàn),其中:
      [0025] 所述應(yīng)用層包括:
      [0026] 原圖像對象存儲單元,用于將原圖像對象保存至內(nèi)存塊中;
      [0027] 內(nèi)存地址獲取單元,用于獲取原圖像對象的內(nèi)存地址;
      [0028] 參數(shù)傳輸單元,用于將原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù)一起 傳給基于C++的圖像處理模塊;
      [0029] 效果圖獲取單元,用于解除內(nèi)存鎖,重新加載內(nèi)存地址中的圖像對象,得到處理后 的圖像信息,從而獲取效果圖;
      [0030] 所述圖像處理模塊包括:
      [0031] 原圖像加載單元,用于根據(jù)獲取的原圖像對象的內(nèi)存地址以及原圖像的長度、寬 度參數(shù),加載內(nèi)存塊中的原圖像信息;
      [0032] 原圖像處理單元,用于對原圖像進行處理;
      [0033] 處理結(jié)果保存單元,用于將處理后的圖像信息保存至所述內(nèi)存塊中以覆蓋原圖像 信息。
      [0034] 作為一種優(yōu)選方案,所述原圖像對象存儲單元,具體為:
      [0035] 用于利用Bitmap類保存原圖像對象,通過Bitmap類中的LockBits方法將原圖像 數(shù)據(jù)以字節(jié)數(shù)組形式保存至內(nèi)存塊中;
      [0036] 所述內(nèi)存地址獲取單元,具體為:
      [0037] 用于通過BitmapData類中的屬性ScanO獲取存放所述字節(jié)數(shù)組的內(nèi)存地址。
      [0038] 作為一種優(yōu)選方案,所述原圖像加載單元,具體為:
      [0039] 用于根據(jù)原圖像的長度、寬度參數(shù),新建OpenCv的Mat對象,該Mat對象用于保存 原圖像信息;以及根據(jù)原圖像對象的內(nèi)存地址,通過BasisOperation類中的byte2mat方法 加載內(nèi)存塊中的原圖像信息。
      [0040] 作為一種優(yōu)選方案,所述原圖像處理單元通過BasisOperation類中的 doSomething方法實現(xiàn)相應(yīng)的圖像編輯操作。
      [0041] 作為一種優(yōu)選方案,所述處理結(jié)果保存單元通過BasisOperation類中的 mat2byte方法實現(xiàn)。
      [0042] 本發(fā)明相對于現(xiàn)有技術(shù)具有如下的有益效果:
      [0043] 1、本發(fā)明方法及系統(tǒng)使用內(nèi)存塊作為信息載體,在基于C#開發(fā)的應(yīng)用層中先將 原圖像對象保存至內(nèi)存塊中,再將原圖像對象的內(nèi)存地址和原圖像的長度、寬度參數(shù)這些 屬于基本數(shù)據(jù)類型的數(shù)據(jù)傳給基于C++的圖像處理模塊,在圖像處理模塊中加載內(nèi)存塊中 的原圖像信息,并在處理后保存至所述內(nèi)存塊中,使應(yīng)用層可以對處理后的圖像信息進行 加載(需要解除內(nèi)存鎖),以獲取效果圖,保證在應(yīng)用層與圖像處理模塊之間的參數(shù)傳遞 中,能夠保障圖像參數(shù)的完整性與安全性。
      [0044] 2、本發(fā)明方法及系統(tǒng)的應(yīng)用層與圖像處理模塊無需將圖像信息保存成本地文件, 然后傳遞文件路徑,而是利用內(nèi)存塊保存圖像信息后直接傳遞圖像數(shù)據(jù),從而降低系統(tǒng)資 源消耗,以及提高圖像處理的整體效率。

      【專利附圖】

      【附圖說明】
      [0045] 圖1為現(xiàn)有技術(shù)中圖像處理模塊與應(yīng)用層的關(guān)系示意圖。
      [0046] 圖2為現(xiàn)有技術(shù)中原圖像信息的傳遞流程示意圖。
      [0047] 圖3為現(xiàn)有技術(shù)中圖像處理流程示意圖。
      [0048] 圖4為本發(fā)明實施例1的圖像參數(shù)傳遞方法流程示意圖。
      [0049] 圖5為本發(fā)明實施例2的圖像參數(shù)傳遞系統(tǒng)框圖。

      【具體實施方式】
      [0050] 實施例1 :
      [0051] 如圖4所示,本實施例的圖像參數(shù)傳遞方法以24位圖為例,通過基于C#開發(fā)的應(yīng) 用層和基于C++開發(fā)的圖像處理模塊實現(xiàn),包括以下步驟:
      [0052] S1、在基于C#開發(fā)的應(yīng)用層中,將原圖像對象(包括位圖深度、長度、寬度、像素、 分辨率等基礎(chǔ)信息)保存至內(nèi)存塊中,并獲取原圖像對象的內(nèi)存地址,然后將原圖像對象 的內(nèi)存地址以及原圖像的長度、寬度參數(shù)一起傳給基于C++的圖像處理模塊;
      [0053] 其中,所述將原圖像對象存至內(nèi)存塊中,并獲取原圖像對象的內(nèi)存地址,具體為:
      [0054] a、利用Bitmap類保存原圖像對象,通過Bitmap類中的LockBits方法將原圖像數(shù) 據(jù)以字節(jié)數(shù)組形式保存至內(nèi)存塊中,代碼片段如下:
      [0055] Bitmap bitSource = new Bitmap ("原圖像");
      [0056] BitmapData bitData = bitSource. LockBits(new Rectangle(0,0,bitSource. Width,
      [0057] bitSource. Height), ImageLockMode. Readffrite, bitSource. PixelFormat);
      [0058] b、通過BitmapData類中的屬性ScanO獲取存放所述字節(jié)數(shù)組的內(nèi)存地址,即 bitData. ScanO0
      [0059] 所述將原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù)一起傳給基于C++的 圖像處理模塊,接口形式如下:
      [0060] public static extern void Function(IntPtr original, int width, int height);
      [0061] S2、在基于C++開發(fā)的圖像處理模塊中,根據(jù)獲取的原圖像對象的內(nèi)存地址以及 原圖像的長度、寬度參數(shù),以正確加載內(nèi)存塊中的原圖像信息,并對原圖像進行處理,然后 將處理后的圖像信息保存至所述內(nèi)存塊中以覆蓋原圖像信息;
      [0062] 其中,根據(jù)獲取的原圖像對象的內(nèi)存地址以及原圖像的長度、寬度參數(shù),加載內(nèi)存 塊中的原圖像信息,具體為:
      [0063] a、根據(jù)原圖像的長度、寬度參數(shù),新建0penCv(0pen Source Computer Vision Library)的Mat對象,該Mat對象用于保存原圖像信息;
      [0064] b、根據(jù)原圖像對象的內(nèi)存地址,通過BasisOperation類中的byte2mat方法加載 內(nèi)存塊中的原圖像信息。
      [0065] 所述對原圖像進行處理通過BasisOperation類中的doSomething方法實現(xiàn)相應(yīng) 的圖像編輯操作,如圖像銳化,灰度圖生成等功能;所述將處理后的圖像信息(即圖4中所 示的結(jié)果圖像信息)保存至所述內(nèi)存塊中以覆蓋原圖像信息,通過BasisOperation類中的 mat2byte方法實現(xiàn)。
      [0066] 本步驟S2的主要代碼片段如下:
      [0067]

      【權(quán)利要求】
      1. 一種圖像參數(shù)傳遞方法,其特征在于:所述方法通過基于c#開發(fā)的應(yīng)用層和基于 C++開發(fā)的圖像處理模塊實現(xiàn),包括W下步驟: 51、 在基于C#開發(fā)的應(yīng)用層中,將原圖像對象保存至內(nèi)存塊中,并獲取原圖像對象的 內(nèi)存地址,然后將原圖像對象的內(nèi)存地址W及原圖像的長度、寬度參數(shù)一起傳給基于C++ 的圖像處理模塊; 52、 在基于C++開發(fā)的圖像處理模塊中,根據(jù)獲取的原圖像對象的內(nèi)存地址W及原圖 像的長度、寬度參數(shù),加載內(nèi)存塊中的原圖像信息,并對原圖像進行處理,然后將處理后的 圖像信息保存至所述內(nèi)存塊中W覆蓋原圖像信息; 53、 在基于C#開發(fā)的應(yīng)用層中,解除內(nèi)存鎖,重新加載內(nèi)存地址中的圖像對象,得到處 理后的圖像信息,從而獲取效果圖。
      2. 根據(jù)權(quán)利要求1所述的一種圖像參數(shù)傳遞方法,其特征在于:步驟S1所述將原圖像 對象保存至內(nèi)存塊中,并獲取原圖像對象的內(nèi)存地址,具體為: 利用Bitmap類保存原圖像對象,通過Bitmap類中的LockBits方法將原圖像數(shù)據(jù)W字 節(jié)數(shù)組形式保存至內(nèi)存塊中; 通過Bitmap化ta類中的屬性ScanO獲取存放所述字節(jié)數(shù)組的內(nèi)存地址。
      3. 根據(jù)權(quán)利要求1或2所述的一種圖像參數(shù)傳遞方法,其特征在于:步驟S2所述根據(jù) 獲取的原圖像對象的內(nèi)存地址W及原圖像的長度、寬度參數(shù),加載內(nèi)存塊中的原圖像信息, 具體為: 根據(jù)原圖像的長度、寬度參數(shù),新建化enCv的Mat對象,該Mat對象用于保存原圖像信 息; 根據(jù)原圖像對象的內(nèi)存地址,通過Basis化eration類中的byte2mat方法加載內(nèi)存塊 中的原圖像信息。
      4. 根據(jù)權(quán)利要求1或2所述的一種圖像參數(shù)傳遞方法,其特征在于:步驟S2所述對原 圖像進行處理通過Basis化eration類中的doSomething方法實現(xiàn)相應(yīng)的圖像編輯操作。
      5. 根據(jù)權(quán)利要求1或2所述的一種圖像參數(shù)傳遞方法,其特征在于:步驟S2所述將 處理后的圖像信息保存至所述內(nèi)存塊中W覆蓋原圖像信息,通過Basis化eration類中的 mat2byte方法實現(xiàn)。
      6. -種圖像參數(shù)傳遞系統(tǒng),其特征在于:所述系統(tǒng)通過基于C#開發(fā)的應(yīng)用層和基于 C++開發(fā)的圖像處理模塊實現(xiàn),其中: 所述應(yīng)用層包括: 原圖像對象存儲單元,用于將原圖像對象保存至內(nèi)存塊中; 內(nèi)存地址獲取單元,用于獲取原圖像對象的內(nèi)存地址; 參數(shù)傳輸單元,用于將原圖像對象的內(nèi)存地址W及原圖像的長度、寬度參數(shù)一起傳給 基于C++的圖像處理模塊; 效果圖獲取單元,用于解除內(nèi)存鎖,重新加載內(nèi)存地址中的圖像對象,得到處理后的圖 像信息,從而獲取效果圖; 所述圖像處理模塊包括: 原圖像加載單元,用于根據(jù)獲取的原圖像對象的內(nèi)存地址W及原圖像的長度、寬度參 數(shù),加載內(nèi)存塊中的原圖像信息; 原圖像處理單元,用于對原圖像進行處理; 處理結(jié)果保存單元,用于將處理后的圖像信息保存至所述內(nèi)存塊中W覆蓋原圖像信 息。
      7. 根據(jù)權(quán)利要求6所述的一種圖像參數(shù)傳遞系統(tǒng),其特征在于: 所述原圖像對象存儲單元,具體為: 用于利用Bitmap類保存原圖像對象,通過Bitmap類中的LockBits方法將原圖像數(shù)據(jù) W字節(jié)數(shù)組形式保存至內(nèi)存塊中; 所述內(nèi)存地址獲取單元,具體為: 用于通過Bitmap化ta類中的屬性ScanO獲取存放所述字節(jié)數(shù)組的內(nèi)存地址。
      8. 根據(jù)權(quán)利要求6或7所述的一種圖像參數(shù)傳遞系統(tǒng),其特征在于:所述原圖像加載 單元,具體為; 用于根據(jù)原圖像的長度、寬度參數(shù),新建化enCv的Mat對象,該Mat對象用于保存原圖 像信息;W及根據(jù)原圖像對象的內(nèi)存地址,通過Basis化eration類中的byte2mat方法加載 內(nèi)存塊中的原圖像信息。
      9. 根據(jù)權(quán)利要求6或7所述的一種圖像參數(shù)傳遞系統(tǒng),其特征在于:所述原圖像處理 單元通過Basis化eration類中的doSomething方法實現(xiàn)相應(yīng)的圖像編輯操作。
      10. 根據(jù)權(quán)利要求6或7所述的一種圖像參數(shù)傳遞系統(tǒng),其特征在于:所述處理結(jié)果保 存單元通過BasisOperation類中的mat2byte方法實現(xiàn)。
      【文檔編號】G06F9/44GK104461585SQ201410854996
      【公開日】2015年3月25日 申請日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
      【發(fā)明者】周俊君, 鐘超軍 申請人:廣州商景網(wǎng)絡(luò)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1