Kopieren eines kleinen Bildes in den Kamerarahmen mit OpenCV für Android

Ich arbeite gerade an einem Programm, das ein kleines Bild auf den Kamerarahmen zeichnen soll. Mit Android OpenCV haben Sie die folgende Funktion, um einen Frame zu verarbeiten:

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {

      Mat rgba = inputFrame.rgba();

      mDetector.setFrame(rgba);
      mDetector.processFrame();

      return rgba;
}

Wo die Mat rgba dann auf dem Bildschirm angezeigt wird. Mein Detektor sollte jetzt das Frame-RGBA verarbeiten (ändern). Hier ist der relevante Code:

public void processFrame() {

    // (1) Doesn't work
    Rect roi = new Rect(0, 0, 100, 100);
    Mat submat = mOutputFrame.submat(roi);
    Mat image =  new Mat(100, 100, CvType.CV_8UC3, new Scalar(0,0,0));
    image.copyTo(submat);

    // (2) Does work 
    // --- mComparatorImage is the same size as mOutputFrame.
    // --- mComparatorImage is 8bit greyscale, mOutputFrame is the rgba CameraFrame
    mComparatorImage = mComparatorHolder.getCurrentImage();
    mComparatorImage.copyTo(mOutputFrame);

    // (3) Should work (but doesn't)
    Imgproc.resize(mComparatorImage, mResizedImageClone, new Size (200, 100));
    Mat bSubmat = mOutputFrame.submat(new Rect(0, 0, 200, 100));
    mResizedImageClone.copyTo(bSubmat); 
}

Ich versuche, eine verkleinerte Version von mComparatorImage in den Kamerarahmen zu kopieren, auf den mOutputFrame (mOutputFrame = rgba) verweist.

Also habe ich es versucht (3). Zu Ihrer Information: mResizedImageClone ist vom Typ Mat und wird als neue Mat () initialisiert.

Durch Ausführen von (3) wird der mOutputFrame nicht geändert.

(2) Dann habe ich versucht, das gesamte mComparatorImage (Typ Mat und dieselbe Größe wie mOutputFrame) nach mOutputFrame zu kopieren. Das hat überraschend geklappt.

(1) Dann dachte ich, dass das Problem etwas mit submat sein muss, weil das Kopieren des großen Bildes funktioniert, aber das Kopieren einer kleinen Version davon in mOutputFrame nicht. Also habe ich versucht, ein kleines schwarzes Bild in mOutputFrame zu kopieren. Dies funktioniert auch nicht, obwohl ich hier anderen Antworten gefolgt bin.

Woran könnte das liegen? Es liegt kein Fehler vor, aber der Kamerarahmen bleibt in (1) und (3) gleich

Wenn Sie zusätzliche Informationen benötigen, lassen Sie es mich wissen.

Ist ein

Antworten auf die Frage(1)

Ihre Antwort auf die Frage