通过opencv将Mat转换为位图

时间:2014-09-02 15:51:54

标签: android opencv ocr tesseract

我正在尝试将Mat矩形从onCameraFrame转换为位图,然后将位图发送到ocr函数,因为我需要根据矩形使ocr在ROI上实时工作。我尝试过以下几行:

        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);

但是当我把它运行终止时。

1 个答案:

答案 0 :(得分:0)

您正在发布rgbaInnerWindow,然后将其重新用作cvtColor的输入。

是的,那会燃烧,rgbaInnerWindow现在无效/空了..

另外,为什么所有那些cvtColor调用?你能不能将8位灰度图像传递给你的ocr?

(转换4通道,所有灰度图像从rgba到bgra完全没用)