【问题标题】:How to draw lines on OpenCV Camera Preview?如何在 OpenCV Camera Preview 上画线?
【发布时间】:2014-02-03 15:16:47
【问题描述】:

我正在使用 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);
    }
}

【问题讨论】:

  • 您可以直接在每个相机帧获得的垫子上绘图。您可以使用 Imageproc.rectangle()、line() 等在垫子的外边缘设置边框。

标签: android opencv camera overlay preview


【解决方案1】:

解决方案如下:Extended SurfaceView's onDraw() method never called

您只需添加:

setWillNotDraw(false)

给构造函数

【讨论】:

    【解决方案2】:

    我想补充的另一点: 覆盖 onDraw 方法后,将布局中的视图更改为:

    <CustomOpenCVJavaCameraView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
             />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多