关于vinsmobile-android图片传入分辨为640*480和旋转的解读修改

vinsmobile-android是基于vinsmobile的ios版开发的,适配在iPhone 7pluse基于此选取的640*480

那为什么要旋转90度?
表面因为摄像机数据默认是横的,所以需要旋转90度。

1、进入代码查看
修改MainActivity.java 中第7个参数旋转为false

VinsJNI.onImageAvailable(image.getWidth(), image.getHeight(), yuvBytes,surface, image.getTimestamp(), false, virtualCamDistance);

2、到nativelib.cpp中注释掉旋转的代码

        //cv::rotate(srcRgba, rotatedRgba, 0);
        viewControllerGlobal->virtualCamDistance = (float)virtualCamDistance;
        viewControllerGlobal->processImage(srcRgba, timeStampSec, isScreenRotated, rgb3D);

报错:feature_tracker.cpp中定位在如下,报错是mask有问题打印输出看一下size

// 特征点提取,提取 史·托马斯 角点
int forw_img_width = forw_img.size().width;
int forw_img_height = forw_img.size().height;
LOGI("forw_img_width:%d",forw_img_width);
LOGI("forw_img_height:%d",forw_img_height);
int mask_width = mask.size().width;
int mask_height = mask.size().height;
LOGI("mask_width:%d",mask_width);
LOGI("mask_height:%d",mask_height);
goodFeaturesToTrack(forw_img, n_pts, n_max_cnt, 0.01, MIN_DIST, mask);
LOGI("zzzzzzzzzzzzzz");

输出:
I/tag_dzy:
forw_img_width:640
forw_img_height:480
mask_width:480
mask_height:640
可见,图片mat是640480,而mask是480460,那肯定越界啊

3、找到更改mask的地方
在feature_tracker.cpp中 :mask(ROW, COL, …) 修改成下面

//#define COL 480
//#define ROW 640
#define COL 640
#define ROW 480

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值