OpenCV for Android 设置预览界面尺寸

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

...
    }
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

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值