2014-09-02 7 views
0

Я пытаюсь преобразовать прямоугольник Mat из onCameraFrame в bitmap, а затем отправить растровое изображение на ocr-функцию, потому что мне нужно сделать ocr-работы в режиме реального времени на ROI в соответствии с прямоугольником. Я пробовал эти строки:Convert Mat to Bitmap by opencv

 Mat mgray= inputFrame.gray(); 

     Mat grayInnerWindow = mgray.submat(100, 100 +500, 150, 200 + 50); 
     Imgproc.cvtColor(mIntermediateMat, rgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA, 4); 
     rgbaInnerWindow.release(); 


     Size sizeGray = grayInnerWindow.size(); 
     int rowss = (int) sizeGray.height; 
     int colss = (int) sizeGray.width; 

     Mat tmp = new Mat(colss, rowss, CvType.CV_8UC4); 

     Imgproc.cvtColor(rgbaInnerWindow, tmp, Imgproc.COLOR_RGBA2BGRA, 4); 
     Bitmap bmp = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888); 
     Utils.matToBitmap(tmp, bmp);     
     ImageView Img = (ImageView)findViewById(R.id.image_manipulations_activity_surface_view);    
     Img.setImageBitmap(bmp); 

, но когда я запускаю его, оно прекращено.

+2

прекращается ** ** почему ?! Logcat нужен здесь ... – sschrass

ответ

0

Вы выпускаете rgbaInnerWindow, затем вы повторно используете его в качестве входа в cvtColor.

да, то будет гореть, rgbaInnerWindow недействителен/пустует ..

также, почему все эти cvtColor звонки? не можете ли вы просто передать 8-битное изображение в оттенках серого на ваш ocr?

(преобразование 4channel, все изображение в оттенках серого от RGBA к bgra совершенно бесполезно)