当前位置:   article > 正文

OpenCV for Android 设置预览界面尺寸_android opencv 圆形预览

android opencv 圆形预览

OpenCV for Android 设置预览界面尺寸

我的Android项目中用到了opencv的人脸识别,所以把opencv的部分内容集成到自己项目中,用JavaCameraView这个类来预览摄像头捕捉到的内容,问题出现了,我的JavaCameraView这个控件在布局中设置的尺寸很大,但是,却只在中间一个比较小的区域有预览画面,四周为黑色填充,我想让它全屏显示,或者接近全屏显示。

经过查看代码,在JavaCameraView类中,有initializeCamera这个方法,这个方法中有尺寸的设置

protected boolean initializeCamera(int width, int height) {
...
        //获得到设备支持的尺寸
        List<android.hardware.Camera.Size> sizes = params.getSupportedPreviewSizes();
                if (sizes != null) {
                //打印支持的尺寸
                for (int i = 0; i < sizes.size(); i++) {
                        Log.e("WillWolf", "width-->" + sizes.get(i).width + " height-->" + sizes.get(i).height);
                    }
                    /* Select the size that fits surface considering maximum size allowed */
                    //这里通过父类的一个计算方式,得到一个opencv认为最合适的尺寸
                    Size frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height);

                    ...

                    Log.d(TAG, "Set preview size to " + Integer.valueOf((int)frameSize.width) + "x" + Integer.valueOf((int)frameSize.height));
//                    params.setPreviewSize((int)frameSize.width, (int)frameSize.height);
                    //WillWolf 设置预览界面大小尺寸
                    params.setPreviewSize(640, 480);

...
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->176 height-->144
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->320 height-->240
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->352 height-->288
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->480 height-->320
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->480 height-->368
12-26 09:26:44.012 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->640 height-->480
12-26 09:26:44.013 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->720 height-->480
12-26 09:26:44.015 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->800 height-->480
12-26 09:26:44.015 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->800 height-->600
12-26 09:26:44.016 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->864 height-->480
12-26 09:26:44.016 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->960 height-->540
12-26 09:26:44.016 13868-13868/com.sdses.onlinecheck E/WillWolf: width-->1280 height-->720
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这块代码的功能是寻找一个合适的尺寸,并设置为预览尺寸,但是,我将sizes这个集合打印出来,里面有好多支持的尺寸,但是我的设备选了一个比较小的尺寸,所以,我手动改成众多支持中的尺寸的一个,640*480,效果还不错,希望可以帮助到大家。
值得注意的是,openCV默认是横屏,也就是说,我们的设备的宽,在openCV中是高。因为,我获取设备的属性,是宽为720px,高为1280px。我在一款横屏类似pad的设备上设置尺寸,可以几乎为全屏,我在一款手机(720px * 1280px)上,设置openCV宽为1280,高为720,手机的宽可以占满全屏,高会有一部分黑色空隙,不知道是不是因为宽高伸缩比例的原因。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/102846
推荐阅读
相关标签
  

闽ICP备14008679号