opencv - opencv4android的相机焦点
问题描述
我想模糊图像,所以我需要更改 OpenCV 的对焦模式。我创建了一个新类来继承 javacameraview 并在类中设置焦点模式。现在只需将 mopencvcameraview 参数更改为 crash。我找不到原因。请看一下,谢谢。另一个问题是如何更改 javacamera2view 中的相机参数?
MyJavaCameraView
public class MyJavaCameraView extends JavaCameraView {
public MyJavaCameraView(Context context, int cameraId) {
super(context, cameraId);
}
public MyJavaCameraView(Context context, AttributeSet attrs) {
super(context, attrs);
}
I want to blur the image, so I need to change the focus mode of OpenCV. I created a new class to inherit javacameraview and set the focus mode in the class. Now just change the mopencvcameraview parameter to crash. I can't find the reason. Please take a look, thank you. Another question is how to change camera parameters in javacamera2view?
public void setFocusMode() {
Camera camera = mCamera;
Camera.Parameters mParameters = camera.getParameters();
if (camera != null) {
List<String> supportedFocusModes = mParameters.getSupportedFocusModes();
if (supportedFocusModes != null && supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_INFINITY)) {
mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);
camera.setParameters(mParameters);
}
}
}
}
ImageManipulationsActivity
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.image_manipulations_surface_view);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.image_manipulations_activity_surface_view);
//Change it to the following crash
//mOpenCvCameraView = (MyJavaCameraView) findViewById(R.id.image_manipulations_activity_surface_view);
mOpenCvCameraView.setVisibility(CameraBridgeViewBase.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
解决方案
我认为您可能会发现使用相机正常拍摄图像然后使用openCV进行模糊处理会更容易。
这也将使您不必在不同设备上测试和适应不同的相机功能。
这里有一些关于图像模糊的优秀 OpenCV 文档:https ://docs.opencv.org/master/d4/d13/tutorial_py_filtering.html
对于大多数 OpenCV 文档,我发现了解 Python 示例中的方法然后将其应用于 Android 对我们来说通常是件好事,请参阅 Android Python 类文档。
推荐阅读
- flutter - 插件 `geocoder` 使用了已弃用的 Android 嵌入版本
- google-chrome - Is it possible to implement a custom request copy browser extension
- javascript - How to get the objects from a request url module function to another function
- rust - 用 Rust 创建周期性任务的最佳方法是什么?
- ansible - ECS 集群的 Ansible 服务发现
- react-native - @react-native-community/NetInfo: Error when I tried to remove event listener
- python - “Dash plotly”:我在将两个输入连接到输出时遇到问题,而且 bas x 轴也没有排序和正确分类
- ruby - 使用 rspec 测试 ruby 脚本很热门
- firebase - 检索数据时出现异常:- 未布置 RenderBox
- google-apps-script - 为什么“category:social”在 GMail UI 搜索中使用,但在 GmailApp.search("category:social", 0, 500) 中不起作用