gpt4 book ai didi

java - 如何使用坐标在android中捕获图像

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:12 31 4
gpt4 key购买 nike

我是 android 的新手,我想把我的问题摆在你面前,,

我想在四个坐标之间捕获图像,如下所示..

enter image description here

首先,我将图像转换为位图,然后将其设置为相对布局的背景。我知道这四个坐标。

那我怎么才能得到盒子里面的图片,然后把它设置成另一个布局作为背景。

伙计们请让我摆脱这种逻辑......

最佳答案

我终于找到了解决问题的办法,我想和你分享,

首先,这是根据+12级转化理论完成的。 好的,我的问题在“OpenCv for Android”的帮助下解决了

这是代码..

public class MainActivity extends Activity implements CvCameraViewListener2,OnTouchListener 
{

Bitmap sourceBitmap,descBitmap,sourceBitmap1;
ImageView view,view2;
SurfaceView amSurfaceView ;
Mat mRgba;
private CameraBridgeViewBase mOpenCvCameraView;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i("Yesssssssss", "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}

};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


// initialise bitmap for crop is here
Bitmap bitmap_source=BitmapFactory.decodeResource(getResources(), R.drawable.quadone);
if(bitmap_source==null)
Log.e("bitmap Null","nulllllll");

// these values should not exceed the limits of bitmap..



Log.e("Bitmap"," "+bitmap_source.getWidth()+" "+bitmap_source.getHeight());


sourceBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.quadone);
sourceBitmap1 =BitmapFactory.decodeResource(getResources(), R.drawable.quadone);
descBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
view = (ImageView) findViewById(R.id.imageView1);
view2=(ImageView) findViewById(R.id.imageView2);

view.setImageBitmap(sourceBitmap1);
view.setOnTouchListener(this);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.color_blob_detection_activity_surface_view);
mOpenCvCameraView.setCvCameraViewListener(this);
Log.e("MAtt","Startttttttttmmmmmmmmmtttttttt");
sourceBitmap =bitmap_source;
if (!OpenCVLoader.initDebug()) {
// Handle initialization error
}
Mat inputMat = new Mat();
Mat outputMat = new Mat();
descBitmap=sourceBitmap;
Utils.bitmapToMat(sourceBitmap, inputMat);
List<Point> src_pnt = new ArrayList<Point>();
Point p0 = new Point(0, 0);
src_pnt.add(p0);
Point p1 = new Point(10, 100);
src_pnt.add(p1);
Point p2 = new Point(100, 125);
src_pnt.add(p2);
Point p3 = new Point(90, 20);
src_pnt.add(p3);
Mat startM = Converters.vector_Point2f_to_Mat(src_pnt);

List<Point> dst_pnt = new ArrayList<Point>();
Point p4 = new Point(0.0, 0.0);
dst_pnt.add(p4);
Point p5 = new Point(0.0, sourceBitmap.getHeight());
dst_pnt.add(p5);
Point p6 = new Point(sourceBitmap.getWidth(), sourceBitmap.getHeight());
dst_pnt.add(p6);
Point p7 = new Point(sourceBitmap.getWidth(), 0);
dst_pnt.add(p7);
Mat endM = Converters.vector_Point2f_to_Mat(dst_pnt);
Mat perspectiveTransform = Imgproc.getPerspectiveTransform(startM, endM);
Size size = new Size(sourceBitmap.getWidth(), sourceBitmap.getHeight());
Scalar scalar = new Scalar(50.0);
Imgproc.warpPerspective(inputMat, outputMat, perspectiveTransform, size, Imgproc.INTER_LINEAR + Imgproc.CV_WARP_FILL_OUTLIERS, Imgproc.BORDER_DEFAULT, scalar);

Log.e("1=",""+inputMat.cols()+" "+inputMat.rows());
Log.e("outmat.."," "+outputMat.cols()+" "+outputMat.rows());
Utils.matToBitmap(outputMat, descBitmap);
view2.setImageBitmap(descBitmap);

// ram@san


}

@Override
public void onCameraViewStarted(int width, int height) {
// TODO Auto-generated method stub
Log.e("onCameraViewStarted","onCameraViewStarted");
}

@Override
public void onCameraViewStopped() {
// TODO Auto-generated method stub
Log.e("onCameraViewStopped","onCameraViewStopped");
}

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgba= new Mat();
Utils.bitmapToMat(sourceBitmap, mRgba);
Utils.matToBitmap(mRgba, descBitmap);
view2.setImageBitmap(sourceBitmap);
return mRgba;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}


}

如果有人有疑问,请把它放在这里..

祝你编码愉快,Ram..

关于java - 如何使用坐标在android中捕获图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17648499/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com