Android OpenCV: отображение Mat и постоянное редактирование данных без переназначения - PullRequest
0 голосов
/ 14 октября 2019

Я использую OpenCv для разработки приложения для рисования на Android. Прямо сейчас я создаю Mat, преобразовываю его в растровое изображение и загружаю в ImageView. Когда пользователь щелкает этот ImageView, я инвертирую мат (как элементарный тест рисования).

final Mat mat = new Mat(1000, 1000, CvType.CV_8UC3, Scalar.all(0));
Bitmap bitmap = createBitmap(1000, 1000, Bitmap.Config.RGB_565);
Utils.matToBitmap(mat, bitmap);

ImageView imageView = (ImageView) findViewById(R.id.touchImageView);
imageView.setImageBitmap(bitmap);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        invertMat(mat.getNativeObjAddr());
    }
});



//and in native...

extern "C" JNIEXPORT jstring JNICALL
Java_com_poppy_drawing_DrawingActivity_invertMat(
         JNIEnv *env,
         jobject instance,
         jlong matNativeAddress) {
    Mat &mat = *(Mat *) matNativeAddress;
    bitwise_not(mat, mat);
}

Вылетает. Как создать коврик, загрузить данные в просмотр изображений, а затем выполнить собственную обработку этих данных при обновлении просмотра изображений при редактировании данных?

...