【问题标题】:Convert Mat to Bitmap by opencv通过 opencv 将 Mat 转换为位图
【发布时间】:2014-09-02 15:51:54
【问题描述】:

我正在尝试将 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);

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

【问题讨论】:

  • 终止为什么?!这里需要Logcat ...

标签: android opencv ocr tesseract


【解决方案1】:

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

是的,那会烧毁的,rgbaInnerWindow 现在无效/为空..

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

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

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多