Как рисовать линии в OpenCV Camera Preview?

Я использую предварительный просмотр камеры OpenCV.

Я хочу нарисовать прямоугольник поверх предварительного просмотра. Я пытался переопределить метод ondraw, но не вижу строки. Пожалуйста помоги.

package com.example.easymeasure;

import org.opencv.android.JavaCameraView;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;

public class CustomOpenCVJavaCameraView extends JavaCameraView {

    public CustomOpenCVJavaCameraView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private Paint linePaint;
    protected void init() { 
        Resources r = this.getResources();
        linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        linePaint.setAlpha(200);
        linePaint.setStrokeWidth(1);
        linePaint.setStyle(Paint.Style.STROKE);
        linePaint.setColor(r.getColor(R.color.marker_color));
        linePaint.setShadowLayer(2, 1, 1, r.getColor(R.color.shadow_color));        
    }

    @Override
      protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);       
        linePaint.setStrokeWidth(5);
        canvas.drawLine(10,20,1000,200,linePaint);
    }
}

2 ответа

Решение

Вот решение: метод onDraw () расширенного SurfaceView никогда не вызывался

Вы просто должны добавить:

setWillNotDraw(false)

Конструктору

Еще один момент, который я хотел бы добавить: после переопределения метода onDraw измените представление в макете на:

<CustomOpenCVJavaCameraView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         />
Другие вопросы по тегам