【发布时间】:2017-04-15 22:57:54
【问题描述】:
我正在从事一个图像处理项目,现在我遇到了一个问题,我导入了 OpenCV 库,我将 RGB 帧转换为二进制帧。现在我不知道如何捕获二进制图像并将其存储在数据库中。没有关于 OpenCV 库的教程。所以任何人都可以帮我解决这个问题。我的编码如下..
public class MainActivity extends AppCompatActivity implements View.OnTouchListener,CameraBridgeViewBase.CvCameraViewListener2 {
private static final String TAG = MainActivity.class.getCanonicalName();
private CameraBridgeViewBase mOpenCvCameraView;
private Mat mRgba;
private Scalar mBlobColorHsv;
private Scalar mBlobColorRgba;
private Mat mIntermediateMat;
private Mat mGray;
Mat hierarchy;
List<MatOfPoint> contours;
private BaseLoaderCallback mLoaderCallback=new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(MainActivity.this);
}
break;
default: {
super.onManagerConnected(status);
}
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mOpenCvCameraView=(CameraBridgeViewBase)findViewById(R.id.opencv_tutorial_activity_surface_view);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
public void onPause(){
super.onPause();
if(mOpenCvCameraView!=null)
mOpenCvCameraView.disableView();
}
@Override
public void onResume(){
{
super.onResume();
if(!OpenCVLoader.initDebug()) {
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback);
}
else{
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
}
@Override
public void onDestroy(){
super.onPause();
if(mOpenCvCameraView!=null)
mOpenCvCameraView.disableView();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
@Override
public void onCameraViewStarted(int width, int height) {
mRgba=new Mat();
mBlobColorRgba=new Scalar(255);
mBlobColorHsv=new Scalar(255);
mRgba = new Mat(height, width, CvType.CV_8UC4);
mIntermediateMat = new Mat(height, width, CvType.CV_8UC4);
mGray = new Mat(height, width, CvType.CV_8UC1);
hierarchy = new Mat();
}
简而言之,我想要做的是创建一个按钮,并在 onclick 方法中我想捕获图像并且必须显示图像的预览。请有人帮我解决这个问题。提前致谢。
【问题讨论】:
-
简而言之,您想将 Mat 转换为 Bitmap?
-
其实你是对的,但我想用一个按钮来捕捉图像。我不知道该怎么做。你能帮我写代码部分怎么做吗?
-
我已经发布了一个编辑过的答案
标签: android image opencv image-processing camera