源码地址:https://github.com/SFUMECJF/imagedetect
看不懂可以在下面加我微信交流。

Javacameraview和surfaceview区别

总而言之,Javacameraview是经过优化后的显示类,在适用性上要更好。缺点只有帧率会低一些。所以,在配置好Open CV后,还是要选择javacameraview。

利用javacameraview显示图像

这个内容很简单,教程也很多,最重要的是在oncameraframe这个函数里面,对相机的帧最处理。

效果以及缺点

真正使用javacameraview后,会发现四周有不少黑边。我将oncameraframe里的帧resize之后,会直接报错。实在搞不定。

去除黑边

去除黑边的思路,将javacameraview缩小到1dp,然后用一个大的imageview覆盖这个javacameraview,然后,在javacameraview里,将原本要返回给javacameraview的图像,先resize到我需要的大小,铺满左右屏幕,再同时返回给imageview,可实现去除黑边功能。注意,这里因为imageview是主活动里的ui,不可以直接设置,要借助于runOnUiThread.
在oncameraview中添加如下代码,即可。

        runOnUiThread(new Runnable() {
            @Override
            public void run() {


                bmap = Bitmap.createBitmap(iv3.getWidth(),  iv3.getHeight(), Bitmap.Config.ARGB_8888);
                resize(mRGBAT, topMat, new Size(iv3.getWidth(), iv3.getHeight()));
                Utils.matToBitmap(topMat, bmap);
                iv1.setImageBitmap(bitmap);
                iv3.setImageBitmap(bmap);

            }
        });
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐