簡體   English   中英

用於圖像處理應用程序的C ++和Java通信

[英]C++ and Java Communication for image processing application

我必須構建用於圖像處理的軟件。 我使用Java來顯示圖像,使用C ++來顯示應用程序的功能。 顯然,圖像將從C ++發送到Java,反之亦然。 我為選擇用於通信c ++和java的方法感到困惑。 我學習並進行了大量研究,終於找到了3種方法:

  1. JNI(java本機接口)

  2. 管道

  3. 插座。 哪種方法更好選擇? 我必須處理高達10MB的高清圖像。 請幫助我。

如果c ++應用程序可以作為命令行應用程序安裝和訪問(例如:FFMpeg,MLT等),請遵循以下說明...

  1. 使用Java中的運行時進程執行Runtime.exec()訪問c ++應用程序。 與其他選項相比,這將節省您很多精力。
  2. 排隊實施以簡化集群處理環境中的執行(流量很高時)
  3. 錯誤處理/運行時進程執行的日志記錄

參考: 通過命令行與JNI調用

我也在同一問題上工作。 作為一種專業的方式,根據我的上一個基准測試,使用JNI從Java調用C ++ DLL是最好的方法。 JNA是另一種方式,但它速度較慢,並且某些功能(例如,兩側對象映射和傳遞引用問題)的機會較少。 10 MB也是一個很小的數目,我嘗試使用2 GB圖像進行嘗試,並且JNI成功地成功處理了大文件(不必擔心10 MB文件,JNI為您提供了更多)。 您可以為功能編寫C ++ DLL,還可以實現Java接口以使用JNI調用它們。 為此,提出了一個新的替代方案,稱為巴拿馬項目。 我認為JNI是在巴拿馬完成交易之前最好的方法,我們將看到巴拿馬將是最好的,否則JNI將保持目前的位置。

由於性能原因,JNI是絕對必須的。 但是,使用起來非常不便,因此這就是為什么我在JNI之上創建了一些工具來促進JNI與C ++的結合的原因: JavaCVJavaCPP 我最初是出於我自己在Java中進行圖像處理的目的而開發它們的,因此它們應該非常適合您自己的目的。 觀看ProCamTracker演示視頻,ProCamTracker是我用它們構建的應用程序。 實時效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM