Как рисовать линии в 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"
/>