我已经成功绘制了一个覆盖矩形,使得矩形内的内容是唯一需要处理的,应用程序应忽略相机区域的其余部分。 截图链接
问题在于,我想在onimagaavailable函数中裁剪上述矩形,如下所示:
@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)
}
这是我用于在camera2上绘制矩形覆盖层的代码。
@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);
}
请帮忙告诉我应该使用哪段代码来裁剪ImageReader图像中的矩形,以便我可以将裁剪后的图像传递给我的处理算法。
onCameraFrame()
中使用OpenCV相机,并裁剪预览图像,以便将相同的子Mat发送到显示和图像处理。请参见https://stackoverflow.com/a/47519725/192373。 - Alex Cohn