Ich habe es geschafft, ein Overlay-Rechteck zu zeichnen, so dass nur innerhalb des Rechtecks verarbeitet wird und die App den Rest der Kamera-Region ignorieren sollte. link to ScreenshotCrop Rechteck Teilabschnitt auf Kamera2 und übergeben Sie es zur Verarbeitung auf opencv
Das Problem ist, ich das oben Rechteck auf onimagaavailable Funktion zuschneiden möchten, wie unten dargestellt:
@Override
public void onImageAvailable(ImageReader reader) {
Image img = reader.acquireLatestImage();
//THIS IS WHERE I WANT TO CROP THE IMAGE TO ONLY SHOW WHAT WAS IN THE
// ABOVE DRAWN RECTANGLE BUT I DONT KNOW HOW, I HAVE GOOGLED FOR THE
// PAST WEEK ON THIS
//after processing i should pass the image to my opencv processing
//algorithm
process(img)
}
Das ist mein Code ist auf der Oberseite des camera2 das Rechteck Overlay zum Zeichnen
@Override
protected void onDraw(Canvas canvas) { // Override the onDraw() Method
super.onDraw(canvas);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(10);
int width = canvas.getWidth()/2;
int height = canvas.getHeight()/4;
int height1 = canvas.getHeight()/3;
int height_1 = canvas.getHeight()/10;
int fin = canvas.getWidth() + canvas.getWidth()/3;
int top = height/4;
Log.e("top", top + "");
canvas.drawRect(canvas.getWidth() - (canvas.getWidth() - 150),
canvas.getHeight() - fin, canvas.getWidth() - 150, height + top, paint);
}
freundlicher Hilfe/sagen Sie mir, welchen Code ich verwenden kann, um das Rechteck aus dem ImageReader-Bild zuzuschneiden, damit ich das zugeschnittene Bild an meinen Verarbeitungsalgorithmus übergeben kann
Beachten Sie, dass Sie die OpenCV-Kamera verwenden und das Vorschaubild in 'onCameraFrame()' zuschneiden können, damit die gleiche Sub-Mat zur Anzeige und zur Bildbearbeitung verwendet wird. Siehe https://stackoverflow.com/a/47519725/192373 –