2012-12-11 3 views
4

bmp 파일을 매트로 변환하고 회색 음영으로 변환하려고합니다. 하지만 문제가 발생했습니다.Utils.bitmapToMat 응용 프로그램을 무력화

String filename = "/mnt/sdcard/DCIM/01.bmp";  
Bitmap bmp = BitmapFactory.decodeFile(filename); 
Mat imgToProcess = null; 

Utils.bitmapToMat(bmp, imgToProcess); 

을하지만 마지막 줄이 사용될 때마다, 응용 프로그램은 (그것이 잘에 계속 나머지 시간) 충돌 : 여기있어거야.

코드의 나머지 부분은 될 줄 :

Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_BGR2GRAY); 
Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_GRAY2RGBA, 4); 
Utils.matToBitmap(imgToProcess, bmp); 

나는 파일이 이전 부분에서 아직 매트로 변환 얻을 수 없기 때문에,하지만 작동 여부를 아무 생각도 없어 코드의 Utils (찾을 수 here)에 대한 설명서를보고 올바르게 사용하고 있지만 여전히 작동하지 않습니다.

누구든지 나를 도와 줄 수 있습니까?

+2

그리고 logcat 출력은 무엇입니까? – ArtemStorozhuk

+0

파일이 내 전화기에 있습니다. logcat 기본적으로 다음과 같이 말합니다 : 12-11 16 : 38 : 04.834 : E/AndroidRuntime (540) : java.lang.IllegalArgumentException : bmp == null – user1804434

+0

질문을 편집하여 살펴보십시오. 내 대답. – ArtemStorozhuk

답변

3

변경 라인이에

Mat imgToProcess = null; 

:

Mat imgToProcess = new Mat(); 

나이 :

Mat imgToProcess = new Mat(bmp.getHeight(), bmp.getHeight(), CvType.CV_8UC4); 

왜 그냥 대신 Highgui.imread를 사용하지 않는?

Mat imgToProcess = Highgui.imread(filename); 
+0

나는 그 두 줄만 시도했다 : String filename = "/mnt/sdcard/DCIM/01.bmp"; 매트 imgToProcess = Highgui.imread (파일 이름); 여전히 충돌합니다. :/ – user1804434

+1

즉,이 파일이 거기에 있지 않음을 의미합니다. '/ mnt/sdcard /'대신'getexternalstoragedirectory'를 사용하고 경로를 다시 확인하십시오. – ArtemStorozhuk

+0

몇 번의 시도와 오류의 코드 샘플을 게시하십시오 (질문 편집). 당신은 오해하고 뭔가 잘못하고있을 수도 있습니다. –

관련 문제