나는 이미지 인식 안드로이드 응용 프로그램을 개발하려고 ... 표면을 사용하여 사용자 정의 카메라를 사용하고 있습니다 .... As Here 안드로이드에서 이미지를 캡처 ... 내가 캡처 한 이미지를 처리하고 싶습니다 opencv를 사용하여 어떻게 캡쳐 된 이미지를 얻고 매트로 변환 할 수 있습니까? 또한 캡처 한 이미지를 임시로 저장하는 방법이 있습니까? 미리 감사드립니다.안드로이드 카메라 Surfaceview와 OpenCv
3
A
답변
2
프로젝트에 opencv 라이브러리를 성공적으로 추가했다고 가정합니다.
다음은 OpenCV4android를 사용하는 샘플 코드입니다.
public class SampleCameraFrameAccessActivity extends Activity implements CvCameraViewListener2, OnTouchListener{
private static final String TAG = "SampleCameraFrameAccessActivity";
protected CameraBridgeViewBase cameraPreview;
protected Mat mRgba;
protected 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(ColorRegionDetectionActivity.this);
cameraPreview.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.camera_sample_layout);
cameraPreview = (CameraBridgeViewBase) findViewById(R.id.sample_test_camera_view);
cameraPreview.setCvCameraViewListener(this);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if(cameraPreview != null){
cameraPreview.disableView();
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}
@Override
public void onCameraViewStarted(int width, int height) {
// TODO Auto-generated method stub
mRgba = new Mat(height, width, CvType.CV_8UC4);
}
@Override
public void onCameraViewStopped() {
// TODO Auto-generated method stub
mRgba.release();
}
@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgba = inputFrame.rgba();
return mRgba;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
}
그리고 XML 레이아웃 파일은 다음과 같습니다
카메라의 프레임 버퍼에서 모든 프레임에 액세스 할 수 있습니다 onCameraFrame 방법에서<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sample_test_layout" >
<org.opencv.android.JavaCameraView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sample_test_camera_view" />
</RelativeLayout>
. 이미지를 캡처하려면 버튼을 추가하고 버퍼에서 특정 프레임을 가져 와서 처리 할 수 있습니다. 프레임은 기본적으로 Mat 객체로 주어집니다. 따라서 변환 할 필요가 없습니다. 처리 후 비트 맵으로 변환해야하는 경우 을 호출하면 Utils.matToBitmap (mat, bmp)을 호출 할 수 있습니다. 방법.
관련 문제
- 1. 안드로이드 SurfaceView와 나쁜 FPS
- 2. Surfaceview와 TextureView의 차이점은 무엇입니까?
- 3. 카메라 동기화 OpenCV
- 4. OpenCV 카메라 문제 :
- 5. Opencv 카메라 해상도 문제
- 6. 카메라 보정 OpenCV
- 7. OpenCV 카운팅 카메라
- 8. Opencv 카메라 포즈 추정
- 9. 백그라운드에서 Android 카메라 OpenCV
- 10. OpenCV : 카메라 포즈 추정
- 11. Windows 8의 OpenCV 카메라
- 12. OpenCv IP 카메라 오류
- 13. iPhone 카메라 및 OpenCV
- 14. 오브젝트를 따라가는 OpenCV 카메라
- 15. OpenCV + VideoInput.lib HD 카메라
- 16. OpenCV Android 카메라 캡쳐
- 17. 안드로이드 카메라 : 전면 카메라
- 18. Android 용 OpenCV : 자동 초점 네이티브 카메라
- 19. OpenCV videocapture 여러 대의 카메라
- 20. 화면에서 카메라 출력의 OpenCV 지연
- 21. opencv cant access 아날로그 카메라
- 22. OpenCV for IP 카메라 사용
- 23. FireWire 카메라 용 OpenCV-Driver
- 24. 왜곡 계수 opencv 카메라 캘리브레이션
- 25. 스레드 내에서 OpenCV 카메라 캡처
- 26. opencv 카메라 데이터에서 매트 만들기
- 27. 카메라 포즈 추정 (OpenCV PnP)
- 28. OpenCV : Mobotix 카메라 피드 지연
- 29. OpenCV IP 카메라 이미지 저하
- 30. 비평면 리그의 OpenCV 카메라 보정