안녕 얘들 아, 나는이 기능에 문제가 생기고있다.이 기능은 사진 캡쳐 후에 호출되며 이제는 거리 변환을 위해 이미지의 데이터를 사용하고 싶다. 그리고 문제가 어디 있는지 아는 정확한 수를 계산하지만 문제가 Imgproc.cvtColor (m, mGray, Imgproc.COLOR_BGRA2GRAY) 때 내가 디버그 프로그램이 시점에서 실행 중지 그래서 제발 대답 해주세요 너는 뭔가를 발견했다. 사전onPictureTaken()에서 오류가 발생했습니다. 문제는 RGB를 회색으로 변환 할 수 없으므로 cvtcolor() 함수에서 프로그램 실행을 중단하십시오.
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "Divyesh Saving a bitmap to file");
// The camera preview was automatically stopped. Start it again.
mCamera.startPreview();
Log.i(TAG, "Divyesh Start preview");
mCamera.setPreviewCallback(this);
Log.i(TAG, "Divyesh Start preview callback");
// Write the image in a file (in jpeg format)
try {
FileOutputStream fos = new FileOutputStream(mPictureFileName);
Log.i(TAG, "Divyesh FOS open");
fos.write(data);
Log.i(TAG, "Divyesh FOS write");
Mat photo = new Mat();
Log.i(TAG, "Divyesh Mat photo = new Mat()");
photo.put(0, 0, data);
Log.i(TAG, "Divyesh photo.put");
m = new Mat(photo.height(), photo.width(), CvType.CV_8U,new Scalar(4));
Log.i(TAG, "Divyesh Mat value of M and height width");
//Bitmap myBitmap32 = photo.copy(Bitmap.Config.ARGB_8888, true);
//Utils.bitmapToMat(myBitmap32, m);
Imgproc.cvtColor(m, mGray, Imgproc.COLOR_BGRA2GRAY);
Log.i(TAG, "Divyesh CVTCOLOR");
Imgproc.distanceTransform(mGray, mBin, Imgproc.DIST_LABEL_PIXEL, 3);
Core.normalize(mBin, mBin, 0, 1., Core.NORM_MINMAX);
Imgproc.threshold(mBin, mBin, .5, 1., Imgproc.THRESH_BINARY);
mBin.convertTo(dist_8u, CvType.CV_8U);
hierarchy = new Mat();
temp = dist_8u;
Imgproc.findContours(dist_8u, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
fu = contours.size();
Log.i(TAG, fu + "finally got no of objects");
fos.close();
} catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
}
}
및 로그 캣
03-14 11:11:39.089: D/CameraBridge(2350): mStretch value: 1.0
03-14 11:11:39.109: D/JavaCameraView(2350): Preview Frame received. Frame size: 115200
03-14 11:11:39.149: D/CameraBridge(2350): mStretch value: 1.0
03-14 11:11:39.149: I/OCVSample::Activity(2350): onTouch event
03-14 11:11:39.159: I/Sample::Tutorial3View(2350): Taking picture
03-14 11:11:39.969: I/Sample::Tutorial3View(2350): Divyesh Saving a bitmap to file
03-14 11:11:40.209: I/Sample::Tutorial3View(2350): Divyesh Start preview
03-14 11:11:40.209: I/Sample::Tutorial3View(2350): Divyesh Start preview callback
03-14 11:11:40.219: I/Sample::Tutorial3View(2350): Divyesh FOS open
03-14 11:11:40.229: I/Sample::Tutorial3View(2350): Divyesh FOS write
03-14 11:11:40.229: I/Sample::Tutorial3View(2350): Divyesh Mat photo = new Mat()
03-14 11:11:40.229: I/Sample::Tutorial3View(2350): Divyesh photo.put
03-14 11:11:40.229: I/Sample::Tutorial3View(2350): Divyesh Mat value of M and height width
03-14 11:11:40.229: D/AndroidRuntime(2350): Shutting down VM
고독한 형제, 나는 단 하나 대답하기를 기대하지 않고 있었다. 그래서 고맙습니다. 많이 시도해 봅니다 .... – Div
변환이 완료되었지만 이제는 오류가 거리 변환 선에옵니다 ... 해결할 수 있도록 도와 주시겠습니까? – Div
다른 질문을 쓸 수 있습니까? 색인 생성이 더 쉽습니다 ... – miguelao