我正在尝试使用OpenCV创建360全景图.我找到了Stitcher类,现在我尝试使用它.这样正常的全景效果很好:
此全景图使用22张图像创建.在这种情况下,Stitcher类很好.它并不快,但结果是可以接受的.
当我尝试为它添加地面和天空时,我遇到了问题.我知道这个班级很难连接所有这些图片,因为地面和天空图片彼此非常相似.我在我的房子里拍了一些照片,地板上的物品还没有工作,所以我想在外面这个算法就更加复杂了.
你对使用OpenCV怎么做有什么想法吗?也许不是OpenCV,其他一些,给出更好的结果?其他语言也是可以接受的.我知道有应用程序这样做,但我不想使用它们.我正在寻找自己编写的解决方案(使用库等).
我正在编写一个程序,用无人机实时拍摄视频中的航拍图像.事实上,我正在做的是:
问题是第3步,这就是原因:我的代码和opencv拼接功能都计算单应性断言我在某个轴上旋转(因为它是全景).实际上,无人机就像一个"扫描仪",所以反而旋转我是相机的翻译.这会影响我的单应性,然后我的拼接步骤会产生伪影.有一种方法可以考虑相机平移而不是旋转(如拼图事物)?如果有帮助,我会使用校准教程计算内在的相机参数
Ps:我用c ++编程
编辑 我发现这个图书馆是由美国国家航空航天局编写的http://ti.arc.nasa.gov/tech/asr/intelligent-robotics/nasa-vision-workbench/
它有帮助吗?我可以使用它与opencv一起使用吗?
我使用THREE.CubeTextureLoader创建全景立方体:
pano = [
'scenes/4/2048/px.jpg', 'scenes/4/2048/nx.jpg',
'scenes/4/2048/py.jpg', 'scenes/4/2048/ny.jpg',
'scenes/4/2048/pz.jpg', 'scenes/4/2048/nz.jpg',
];
newCubeTexture = cubeTextureLoader.load(pano);
geometry = new THREE.BoxGeometry(20000, 20000, 20000);
material = new THREE.MeshBasicMaterial({
envMap: newCubeTexture,
side: THREE.BackSide,
color: 0xffffff,
transparent: true,
opacity: 0
});
mesh = new THREE.Mesh(geometry, material);
Run Code Online (Sandbox Code Playgroud)
但是当纹理加载时,我看到边缘有1px的bug.
为什么它是heppend?
PS如果我使用地图加载每一面的纹理都很好!
new THREE.MeshBasicMaterial({
map: new THREE.ImageUtils.loadTexture(arr[i]),
side: THREE.BackSide,
transparent: true,
opacity: 0
});
Run Code Online (Sandbox Code Playgroud) 我正在建立一个网站,我有一个页面,它接收一个地址并使用它生成一个2D路线图样式谷歌地图,然后在它旁边,该地址的街景.
我的问题是这两个地图几乎跨越了网站的整个宽度,用户可能会在向下滚动页面时让鼠标移过它,并因为无法向下滚动(缩放到地图)而感到困惑.
为2D地图禁用此功能非常紧张
//works to disable scroll wheel in 2D map
var mapOptions = {
zoom: 12,
center: latlng,
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions );
//not working to disable scroll wheel in panorama
var panoramaOptions = {
position: results[0].geometry.location,
scrollwheel: false
};
panorama = new google.maps.StreetViewPanorama(document.getElementById("map_canvas2"), panoramaOptions );
Run Code Online (Sandbox Code Playgroud)
但是街景似乎不允许我使用这些选项禁用滚轮,我无法在google-docs中找到此问题.任何人都知道是否可以这样做或建议如何处理它?
更新:我发现http://os.ivrpa.org/panosalado/wiki在java中有一个实现.任何在c或c ++中有相似之处的人?
我有这个全景图,来自google streetview的球形地图,并希望将其映射到球体/立方体上.下面是一些示例和插图,我寻求的是可以执行此操作的库或一些实现指南.
我试过http://krpano.com/docu/tutorials/quickstart/#top,它给出了底部列出的结果.它说明了我想要的,但旋转轴关闭.我需要创建直接前后左右视图.理想我想将它映射到球体并告诉它提取的角度(立方体的方向).
[返回,下,前,左,右,上]
我有一个PointGrey Ladybug3相机.它是一个全景(多)摄像头(5个摄像头可以360º和1个摄像头查找).我已经完成了所有的校准和校正,所以我最终得到的是6幅图像中的所有像素,我知道它是一个全局帧的3d位置.我现在要做的是将这个3d点转换为全景图像.最常见的是径向(Equirectangular)投影,如下所示:
对于所有3D点(X,Y,Z),可以找到theta和phi坐标,如:
我的问题是,是否可以使用opencv自动执行此操作?或者,如果我手动执行此操作,那么在theta中转换那组像素的最佳方法是什么,phi坐标到图像?
官方瓢虫SDK使用OpenGL进行所有这些操作,但我想知道是否可以在opencv中执行此操作.
谢谢,
何塞普
我一直想创建一个Android的纸板应用程序,用户可以在其中输入我拍摄的全景照片的球形全景视图,并且我可以收集有关用户在此过程中所看到的位置的数据.我看过google提供的"Cardboard Demo",它们有一个名为"Photo sphere"的功能,用户可以按照我想要的方式查看照片,但我希望以不同的方式实现它.
任何人都可以给我一些关于如何用纸板这样的panormaic观众的方向吗?
我目前正致力于构建一个显示全景照片的查看器.我将图像放在CSS多维数据集的内部,并且正在研究如何使用javascript中的deviceorientation事件来控制它.
我发现并实现了一种算法,将原始数据从deviceorientation事件转换为euler角度,但我不确定如何使用CSS 3d旋转变换将这些数据挂钩以旋转立方体.
我的目标是能够让用户拿起手机并环顾全景,类似于那里的一些商业软件.
我正在考虑使用three.js来实现这一点,但是这个特定项目的库大小太大了.我们希望保持低开销.
这是我目前拥有的代码笔:
http://codepen.io/michaelsharpe/pen/wzpvD
任何帮助将不胜感激!谢谢!
UPDATE
我现在有一些基本功能.这是更新的代码:
http://codepen.io/michaelsharpe/pen/wFaeI
您需要关闭屏幕旋转,并且必须将手机倾斜到横向视图中.我现在的新问题是如何在手机处于纵向位置以及打开屏幕旋转时使整个工作完成.
我相信有很多与此相关的问题,但它们都已经过时了。
我正在寻找一种在 React Native 中渲染全景/360 图片查看器的方法。到目前为止,所有尝试使用 Google VR SDK 的库都已经过时或损坏,根本无法使用。
我也尝试过使用 WebView(使用 React-360),但 Web 视图太慢了,RAM 使用量加倍,最糟糕的是,不能用于渲染设备上存储的 360 图片。
我想另一个选择是获取一个 OpenGL 库并尝试自己实现它,但如果已经有一些东西的话,这可能需要大量工作。
我正在使用以下图像VrPanoramaView
当我将其加载到视图中时,它看起来像这样。
但我希望它在打开图像之前将图像动态移动到左侧,如下所示。
我可以用手指移动图像,但我希望它在加载时设置其角度。
这是我的代码。
VrPanoramaView.Options options = new VrPanoramaView.Options();
InputStream inputStream = null;
AssetManager assetManager = getAssets();
inputStream = assetManager.open("test_2"+ ".jpg");
options.inputType = VrPanoramaView.Options.TYPE_MONO;
mVrPanoramaView.loadImageFromBitmap(BitmapFactory.decodeStream(inputStream), options);
mVrPanoramaView.setStereoModeButtonEnabled(false);
mVrPanoramaView.setInfoButtonEnabled(false);
mVrPanoramaView.setPureTouchTracking(true);
mVrPanoramaView.setFullscreenButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我尝试过mVrPanoramaView.setPivotX(100);
,但没有产生任何影响。我需要知道如何使用任何手势在全景视图中翻译图像。
我在用GoogleVrSDK
implementation 'com.google.vr:sdk-base:1.160.0'
implementation 'com.google.vr:sdk-panowidget:1.170.0'
Run Code Online (Sandbox Code Playgroud) panoramas ×10
opencv ×4
c++ ×3
javascript ×3
android ×2
android-view ×1
css ×1
euler-angles ×1
geometry ×1
google-maps ×1
google-vr ×1
html ×1
opengl ×1
opengl-es ×1
projection ×1
react-native ×1
three.js ×1