gpt4 book ai didi

android - 从 Android for OpenCV 相机框架获取 Mat 对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:35 27 4
gpt4 key购买 nike

我正在根据 OpenCV4Android 给出的教程 2 开发一个 android 应用程序。我想要实现的是当我触摸手机屏幕(onTouch())时获取相机框架的 Mat 对象。我想修改代码,以便将图像存储为 Mat 而不是手机内存中的 jpeg 文件。然后垫子将进行进一步处理。

是否需要涉及onCameraFrame()函数?任何指导将不胜感激。我对 Android 开发和 OpenCV 都很陌生。

注意:我使用的是 Android 版本 4.2.2 和 OpenCV2.4.8。

编辑:

编辑 onTouch()onCameraFrame() 函数后,这些是代码 fragment :

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {

Mat img = inputFrame.rgba();

if(touched) {
int imgsize = (int) (img.total()*img.channels());
byte[] data = new byte[imgsize];
img.get(0,0,data);
int col = img.cols();
int row = img.rows();
Toast.makeText(this, "size:"+imgsize+" row:"+row+" col:"+col, Toast.LENGTH_SHORT).show();

StartSocket(row, col, imgsize, data);

touched = false;
}

return img;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i(TAG,"onTouch event");
touched = true;
return true;
}

我所做的基本上是将 Mat 对象转换为名为 data[]ByteArray,然后通过套接字将其与其他信息一起发送到服务器。当我尝试发送文本文件时,套接字作为一个单独的项目工作正常,所以我相信它没有任何问题。

而且我没有 LogCat,因为我直接在我的设备上运行该应用程序。

最佳答案

如果你想处理来自相机的图像,是的,你需要 onCameraFrame() 方法,因为它提供你的图像

public class MyActivity extends Activity implements CvCameraViewListener2,OnTouchListener {
boolean touched=false;
public boolean onTouch(View v, MotionEvent event) {
touched = true;
return true;
}
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
if ( touched ) {
// do some processing on rgba Mat
touched = false;
}
return rgba;
}
}

关于android - 从 Android for OpenCV 相机框架获取 Mat 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723327/

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