簡體   English   中英

使用openCV的android中的DrawKeypoints

[英]DrawKeypoints in android using openCV

我想在OnCameraFrame中繪制關鍵點,但是我遇到了錯誤,有人可以幫助我嗎? 我將代碼放在下面:

碼:

    MatOfKeyPoint points = new MatOfKeyPoint();
    Mat mat = (Mat) inputFrame;
    FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST);
    fast.detect(mat, points);


    Scalar redcolor = new Scalar(255,0,0);
    Mat mRgba= mat.clone();
    Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);
    Core.line(mRgba, new Point(100, 100), new Point(300,300), new Scalar(0, 0, 255));

    Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3);


    return mRgba;

我的LogCat是這樣的:

11-26 16:22:49.305: D/JavaCameraView(22620): Starting processing thread
11-26 16:22:51.615: I/Choreographer(22620): Skipped 182 frames!  The application may be doing      too much work on its main thread.
11-26 16:22:51.735: D/JavaCameraView(22620): Preview Frame received. Frame size: 1382400
11-26 16:22:51.735: I/ActivityManager(22620): Timeline: Activity_idle id: android.os.BinderProxy@428db6c0 time:135999496
11-26 16:22:51.755: W/dalvikvm(22620): threadid=13: thread exiting with uncaught exception (group=0x41875e48)

11-26 16:22:51.755:E / AndroidRuntime(22620):致命例外:Thread-35591 11-26 16:22:51.755:E / AndroidRuntime(22620):進程:com.nummist.secondsight,PID:22620 11 -26 16:22:51.755:E / AndroidRuntime(22620):java.lang.ClassCastException:org.opencv.android.JavaCameraView $ JavaCameraFrame無法轉換為org.opencv.core.Mat 11-26 16:22:51.755: E / AndroidRuntime(22620):位於com.nummist.secondsight.CameraActivity.onCameraFrame(CameraActivity.java:373)11-26 16:22:51.755:E / AndroidRuntime(22620):位於org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame (CameraBridgeViewBase.java:387)11-26 16:22:51.755:E / AndroidRuntime(22620):在org.opencv.android.JavaCameraView $ CameraWorker.run(JavaCameraView.java:328)11-26 16:22:51.755 :E / AndroidRuntime(22620):位於java.lang.Thread.run(Thread.java:841) 11-26 16:22:51.775:D / JavaCameraView(22620):收到預覽幀。 框架大小:1382400 11-26 16:22:51.795:D / JavaCameraView(22620):與攝像頭斷開連接11-26 16:22:51.795:D / JavaCameraView(22620):通知線程11-26 16:22:51.795: D / JavaCameraView(22620):正在等待線程

紅色LogCat消息以粗體顯示

我不確定,但我認為您必須使用:

MatOfKeyPoint points = new MatOfKeyPoint();
Mat mat = inputFrame.rgba();
FeatureDetector fast = FeatureDetector.create(FeatureDetector.FAST);
fast.detect(mat, points);


Scalar redcolor = new Scalar(255,0,0);
Mat mRgba= mat.clone();
Imgproc.cvtColor(mat, mRgba, Imgproc.COLOR_RGBA2RGB,4);
Core.line(mRgba, new Point(100, 100), new Point(300,300), new Scalar(0, 0, 255));

Features2d.drawKeypoints(mRgba, points, mRgba, redcolor, 3);


return mRgba;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM