私は行列をディスクに保存したいと思っています。 OpenCVのc、C++バージョンは、関数cvWriteをサポートしています。私はAndroidのバイナリと同等の機能は持っていません。他のオプションはありますか? C/CでAndroid OpenCVバイナリにデータ永続化機能がありますか?
1
A
答えて
1
++あなたがサポートされているすべてのプラットフォーム上で完全なAPIを持っています。
AndroidのJava APIは、永続化APIをエクスポートしませんが、いくつかのクラスは、セーブ/ロードメソッドを提供それらの構成のために。
0
OpenCV4Androidはまだ独自の永続性を持っていないので、私の意見では、Matを保存する最も普遍的な方法は、まずJSONのようなデータ交換形式に変換することです。
この変換を実行できるようになると、それを格納する柔軟性が大幅に向上します。 JSONは簡単に文字列に変換され、ネットワーク接続経由で送信されます。
OpenCV C++ you are able to store data as YAMLでは、Andrey Kamaevが指摘していたようにAndroidではまだ利用できません。ここのJSONはYAMLと同じ目的を持っています。
JSONをJavaで解析するには、この簡単にlibrary Google GSONを使用できます。
そして、ここでは正確に(問題がある場合は私に知らせて、私は簡単なテストを行なったし、それが働いていた)を行うには、私の最初の試みである:
public static String matToJson(Mat mat){
JsonObject obj = new JsonObject();
if(mat.isContinuous()){
int cols = mat.cols();
int rows = mat.rows();
int elemSize = (int) mat.elemSize();
byte[] data = new byte[cols * rows * elemSize];
mat.get(0, 0, data);
obj.addProperty("rows", mat.rows());
obj.addProperty("cols", mat.cols());
obj.addProperty("type", mat.type());
// We cannot set binary data to a json object, so:
// Encoding data byte array to Base64.
String dataString = new String(Base64.encode(data, Base64.DEFAULT));
obj.addProperty("data", dataString);
Gson gson = new Gson();
String json = gson.toJson(obj);
return json;
} else {
Log.e(TAG, "Mat not continuous.");
}
return "{}";
}
public static Mat matFromJson(String json){
JsonParser parser = new JsonParser();
JsonObject JsonObject = parser.parse(json).getAsJsonObject();
int rows = JsonObject.get("rows").getAsInt();
int cols = JsonObject.get("cols").getAsInt();
int type = JsonObject.get("type").getAsInt();
String dataString = JsonObject.get("data").getAsString();
byte[] data = Base64.decode(dataString.getBytes(), Base64.DEFAULT);
Mat mat = new Mat(rows, cols, type);
mat.put(0, 0, data);
return mat;
}
関連する問題
- 1. すべてのバージョン管理システムに「ローカルのみ変更を永続化」機能がありますか?
- 2. Celery/RabbitMQを永続化する方法はありますか?
- 3. ワークフローサービス永続性が機能しない
- 4. iPhoneにデータベース管理/オブジェクト永続化の方法がありますか?
- 5. NHibernateイベントリスナー永続性 - どのように機能しますか?
- 6. androidのscrollViewでズーム機能に問題がありますか?
- 7. 機能/永続的な辞書データ構造の実装
- 8. 永続化する必要がある一回限りのデータで何をしますか?
- 9. ビジュアルスタジオビルドヘルパーに環境変数を永続化する方法はありますか?
- 10. iframeにセッションを永続化する方法はありますか?
- 11. 永続的なNSManagedObjectIDはあまり永久的ではありませんか?
- 12. ASP.NETのポストバック間でデータの永続化
- 13. 永続データ要件
- 14. Pythonに変更可能なバイナリ配列がありますか?
- 15. コンテナの再起動の間にMongoDBデータを永続化する方法はありますか?
- 16. JPA Mavenビルド後にEntityManagerの永続化プロバイダがありません
- 17. nsIAlertsServiceを永続化できますか?
- 18. JMX Beanを永続化しますか?
- 19. 永続アクターをAkka永続性でどのように構成する必要がありますか?
- 20. バリデーションが永続的に機能しない
- 21. TempData 1つのページに永続的に永続化する
- 22. Ruby gemにパッケージ化されたデータベースまたは永続ストレージがありますか?
- 23. Backbone.jsデータ永続性
- 24. ModelStateを永続的にするが、あまりにも永続的ではない
- 25. hibernateを使ってデータをデータベースに永続化/更新する
- 26. Android永続ソケット接続ルール
- 27. Frama-C Windowsバイナリがありますか?
- 28. 要求が終了する前にセッションを永続化する方法はありますか?
- 29. アンドロイドに「ライブラリ/テンプレート」iphone xcode機能がありますか?
- 30. XMPPで永続性はどのように機能しますか?