私は行列をディスクに保存したいと思っています。 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. PyCharm機能を永続化する
- 2. すべてのバージョン管理システムに「ローカルのみ変更を永続化」機能がありますか?
- 3. の永続化データ
- 4. グループ化機能とグループ化機能はありますか?
- 5. Celery/RabbitMQを永続化する方法はありますか?
- 6. iPhoneにデータベース管理/オブジェクト永続化の方法がありますか?
- 7. 永続化プロバイダの例外がありません
- 8. ワークフローサービス永続性が機能しない
- 9. データを永続的に格納できるデータ構造はありますか?
- 10. Doxygenには行継続機能がありますか?
- 11. TableController:永続データをDTOにフラット化
- 12. KeyError: 'ある機能にはデータがありますが、他の機能にはありません。
- 13. NHibernateイベントリスナー永続性 - どのように機能しますか?
- 14. androidのscrollViewでズーム機能に問題がありますか?
- 15. ビジュアルスタジオビルドヘルパーに環境変数を永続化する方法はありますか?
- 16. iframeにセッションを永続化する方法はありますか?
- 17. 永続化する必要がある一回限りのデータで何をしますか?
- 18. バイナリ検索ツリーに挿入機能に関する問題があります
- 19. 永続的なNSManagedObjectIDはあまり永久的ではありませんか?
- 20. Android AppのProguard難読化機能はありません
- 21. 機能/永続的な辞書データ構造の実装
- 22. Androidの永続化削除TextView
- 23. 1つの永続モデルのリモートメソッドからループバックの別の永続化モデルのデータにアクセスする方法はありますか?
- 24. コンテナの再起動の間にMongoDBデータを永続化する方法はありますか?
- 25. Pythonに変更可能なバイナリ配列がありますか?
- 26. ASP.NETのポストバック間でデータの永続化
- 27. JPA Mavenビルド後にEntityManagerの永続化プロバイダがありません
- 28. 永続データ要件
- 29. Redis接続を永続的に保つ必要がありますか?
- 30. JMX Beanを永続化しますか?