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