Я пытаюсь отправить CvCameraViewFrame или Mat в другое действие, но они не реализуют Serializable или Parcelable и создают для них класс-оболочку, просто чтобы использовать его, как-то кажется излишним. Как это сделать?Как отправить OpenCV Mat в качестве putExtra для Android Intent?
ответ
Я бы использовал фрагменты вместо действий и получить/установить общий Mat
Подарок в контейнере Активность из фрагментов.
Если есть необходимость придерживаться нескольких видов деятельности, при условии, что это в рамках процесса, варианты
Обмен - Использование глобального
Application
подкласса, чтобы получить/установитьMat
предпочтительно в какой-то вещи, какHashMap<String, WeakReference<Mat>>
и передавая ключевую строку HashMap по видам деятельности (1). Удостоверьтесь, что вы сохраняете сильную ссылку наMat
до того, как дочерняя активность завершитсяonResume()
, иначеMat
может быть собрано мусором.Копирование - Использование
getNativeObjAddr
(2) и передать значениеlong
адрес как часть вызова умысла. Активность ребенка воссоздаетMat
с собственным адресом (3). КлонированиеMat
у ребенка необходимо, так как родительская активность может быть убита в любое время после завершенияonResume
дочерней активности.
Образец ниже.
// In parent activity
Mat img = ...;
long addr = img.getNativeObjAddr();
Intent intent = new Intent(this, B.class);
intent.putExtra("myImg", addr);
startActivity(intent);
//In child activity
long addr = intent.getLongExtra("myImg", 0);
Mat tempImg(addr);
Mat img = tempImg.clone();
@Kiran является правильным.
Вы должны получить экземпляр матрицы, используя свой собственный адрес.
long frameAddress = intent.getLongExtra("extra_name", 0);
Mat m = new Mat(frameAddress);
- 1. Android - Intent putExtra принимает nullpointer
- 2. Android Intent putExtra (String, Serializable)
- 3. Android Intent putExtra vs Static calls?
- 4. Intent putExtra, NullPointerException
- 5. putExtra, используя цикл в Intent
- 6. android intent putextra wont pass my value
- 7. OpenCV Mat для преобразования JavaCV Mat
- 8. Intent putextra serializable object array
- 9. OpenCV Mat обработка Android JNI
- 10. Android Intent, отправить параметры?
- 11. android putextra для будущего оповещения
- 12. Как отправить android.location.Address с намерением как putextra
- 13. Как отправить файл csv в качестве приложения в android?
- 14. Отправить putExtra через намерение уведомления
- 15. OpenCV mat * image = (Mat *) image
- 16. Сохранить Mat (openCV) в SharedPreferences Android
- 17. Intent putExtra (String, String) внутри AsyncTask
- 18. Intent putExtra ArrayList <NameValuePair>
- 19. Как передать значение putExtra() в editText из Intent Activity?
- 20. Android - Намерение "putExtra"
- 21. Создайте yuv mat in opencv на android
- 22. Ошибка Android OpenCV при преобразовании Mat в Android bitmap
- 23. Исключение Null Pointer с использованием Intent putExtra
- 24. OpenCV Android - вычислить среднее значение столбца Mat
- 25. Android - уведомление putExtra issue
- 26. OpenCV Android Continuous Mat ширина и высота
- 27. Преобразование PByte в Mat OpenCV
- 28. Используйте OpenCV Mat в приложении Android Java. NoClassDefFound Ошибка с OpenCV Mat
- 29. Android .putExtra (не отвечает)
- 30. OpenCV Mat -> Matlab Mat File
Что такое tempImg (addr)? – Dhananjay