- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
还是完全依赖于 Bumblebee(或任何其他 Point Grey Imaging 传感器)?我正在尝试链接 bumblebee 2 stereo rig 附带的立体处理 API 来处理一些离线图像。似乎三叶草立体功能需要一些上下文标志和 input.cal 和 input.ppm 形式的校准文件(即包含两个立体校正图像的一个图像不知何故模糊和重叠)。我如何从其他离线图像获取此 input.ppm 文件以仍然能够使用三叶草立体 API。还有标定文件input.cal,能否获取到与离线图像一致,如何获取?
最佳答案
是的,可以使用 Triclops API 来处理离线图像。您指出的要求是来自相机和图像文件的校准文件(.cal)。校准文件最好在图像捕获时提取,但根据我的经验,除非您更改设置,否则它始终保持不变。为了满足 Triclops API 的输入,您还需要使用 Point Grey Fly Capture API,因为它提供了图像转换方法。我的项目完全符合您的要求。我在现场捕获原始像素交错图像,然后使用 FlyCapture 和 Triclops API 对其进行处理,以创建校正图像和视差图像以及来自立体对的点云。
查看 Point Grey 示例及其 API 文档,了解如何捕获校准文件。本质上,该方法是这样的:flycaptureGetCalibrationFileFromCamera(context, &szCalFile);
其中上下文是“相机上下文”
您的初始图像文件格式会改变转换方法,但就我而言,这里是我如何使用 C++ 将原始图像转换为立体图像。我正在使用大黄蜂 XB3 彩色相机,其原始图像大小为 1280x960,并从外部两个相机抓取图像:
// Read raw file
//pFile = fopen ( "FlyCap.raw" , "rb" );
pFile = fopen ( argv[1] , "rb" );
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// Set raw file size
ISize = (numCols*numRows*bytesPerPixel);
// allocate memory to contain the whole file:
buffer = (unsigned char*) malloc (sizeof(char)*ISize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,1,ISize,pFile);
if (result != ISize) {fputs ("Reading error",stderr); exit (3);}
// Create the FlyCapture Context for processing
fe = flycaptureCreateContext( &flycapture );
_HANDLE_FLYCAPTURE_ERROR( "flycaptureCreateContext()", fe );
fe = flycaptureSetColorProcessingMethod(flycapture, FLYCAPTURE_HQLINEAR);
_HANDLE_FLYCAPTURE_ERROR( "flycaptureSetColorProcessingMethod()", fe );
fe = flycaptureSetColorTileFormat(flycapture, FLYCAPTURE_STIPPLEDFORMAT_GBRG);
_HANDLE_FLYCAPTURE_ERROR( "flycaptureSetColorTileFormat()", fe );
//Import the raw image in buffer into FlyCaptureImage structure
flycaptureImage.iCols = 1280;
flycaptureImage.iRows = 960;
flycaptureImage.iNumImages = 2;
flycaptureImage.bStippled = true;
flycaptureImage.pixelFormat = FLYCAPTURE_RAW16;
flycaptureImage.iRowInc = 2560;
flycaptureImage.timeStamp.ulSeconds = 100;
flycaptureImage.timeStamp.ulMicroSeconds = 100;
flycaptureImage.pData = buffer;
// Create buffers for holding the color and mono images
unsigned char* rowIntColor =
new unsigned char[ numCols * numRows * flycaptureImage.iNumImages * 4 ];
unsigned char* rowIntMono =
new unsigned char[ numCols * numRows * flycaptureImage.iNumImages ];
// Create a temporary FlyCaptureImage for preparing the stereo image
FlyCaptureImage tempColorImage;
FlyCaptureImage tempMonoImage;
tempColorImage.pData = rowIntColor;
tempMonoImage.pData = rowIntMono;
// Convert the pixel interleaved raw data to row interleaved format
fe = flycapturePrepareStereoImage( flycapture, flycaptureImage, &tempMonoImage, &tempColorImage );
_HANDLE_FLYCAPTURE_ERROR( "flycapturePrepareStereoImage()", fe );
//Save side-by-side color stereo image
fe = flycaptureSaveImage( flycapture, &tempColorImage, stereoimg, FLYCAPTURE_FILEFORMAT_PPM );
_HANDLE_FLYCAPTURE_ERROR( "flycaptureSaveImage()", fe );
printf ("Saving Stereo...\n");
请注意,到目前为止我根本没有使用 Triclops API。 flycaptureSaveImage();
的输出输入到 Triclops 方法中。那时有一些选项可以处理彩色与单色。看看他们的 Triclops API 附带的名为“stereoto3dpoints.cpp”的 Point Grey 示例,它接管了我离开的地方。我希望这可以帮助你。
关于c++ - Triclops Stereo API 可以用来处理离线图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10320467/
我想对我现有的 AR 应用做一些修改,我想 Split View并在里面添加 2 个 ARSCNView 这样用户就可以使用 VR Card Box 并获得不同的体验但是 Xcode 总是返回给我:
我想对我现有的 AR 应用做一些修改,我想 Split View并在里面添加 2 个 ARSCNView 这样用户就可以使用 VR Card Box 并获得不同的体验但是 Xcode 总是返回给我:
使用 Matlab 立体相机校准器时的默认坐标系是使 Z 远离相机增加(参见本页底部图像:http://www.mathworks.com/help/vision/gs/coordinate-syst
尝试在 OpenGL 上显示两个图像时遇到问题(使用 PFD_STEREO 启用立体)。当我尝试同时显示 2 张图像时,只有一张(最后一张)图像显示而另一张图像仅显示黑色(图像未显示)。 代码如下:
还是完全依赖于 Bumblebee(或任何其他 Point Grey Imaging 传感器)?我正在尝试链接 bumblebee 2 stereo rig 附带的立体处理 API 来处理一些离线图像
我目前正在开发一个适用于通过麦克风捕获的现场音乐的应用程序。但是,这使得测试变得非常困难,我在共享办公室工作等等。我目前正在通过从应用程序中加载外部 MP3 文件来对其进行测试,但这远非最佳。 我想做
我想知道是否可以将 Java 应用程序(或任何应用程序)转换为立体 3D (例如,使用红蓝眼镜)。 是否有任何工具或框架可以执行此操作? 最佳答案 解决此问题的最常见方法是使用 JOGL,它是 Ope
我想做类似于 this question 的事情,但用于 stereoCalibrate() 而不是 calibrateCamera()。也就是说,计算立体相机校准的重投影误差。 我的简化示例如下所示
我使用 opencv 为 2 个摄像头(左侧的低分辨率摄像头和右侧的高分辨率摄像头)成功校准了内部参数和外部参数。我从 2 组图像(棋盘图案 - 每个相机大约 20 张图像)进行立体校准。我现在有一个
在 Quadro 卡 X 驱动程序的 NVIDIA README 中,有这样的注释: Workstation overlays, stereo visuals, and the unified bac
我有两个立体图像,我想用它们来计算深度图。不幸的是,我不懂 C/C++,但我懂 python——所以当我找到 this tutorial 时,我很乐观。 不幸的是,教程似乎有些过时了。它不仅需要进行调
使用“立体声混音”获取系统音频很容易,但大多数现代驱动程序不再支持该功能。 Steam本地流媒体不知何故设法做到了,我可以在流媒体任意游戏时清楚地听到其他应用程序的音频输出。 Steam 是如何做到的
我有一个 32 位 *.wav 文件 44100Hz 采样。我使用 wave 和 python struct.unpack 将数据获取到数组。不过,我想将两个立体声 channel 中的每一个作为单独
我正在使用 Flutter 构建一个应用程序,它允许我录制音频然后稍后播放。我正在使用包 audio_recorder 0.4.0 来录制音频,并使用包 stereo 1.0.0 来播放音频。 当我使
在 OpenCV 立体中,如何检查给定的 3D 点 (x,y,z) 是否可以投影到左/右图像平面上?我已经校准了通过 stereoRectify 获得的相机参数。 更具体地说,我想将 projectP
我一直在使用 Azure SDK 并根据下面的引用页开发文本转语音应用 https://learn.microsoft.com/en-us/dotnet/api/microsoft.cognitive
我正在使用 node-microphone 从 nodejs 录制音频(这只是一个用于 arecord 的 javascript 接口(interface)),并且想要将流 block 存储在 Aud
我一直在使用 Azure SDK 并根据下面的引用页开发文本转语音应用 https://learn.microsoft.com/en-us/dotnet/api/microsoft.cognitive
我尝试使用一个 RemoteIO AudioUnit(这是唯一的 AudioUnit)的两个 AudioStreamBasicDescription 将音频输入设置为单声道并输出为立体声。 然后,我为
我希望将 MATLAB stereoParameters 结构转换为内部矩阵和外部矩阵,以便在 OpenCV 的 stereoRectify 中使用。 如果我明白http://docs.opencv.
我是一名优秀的程序员,十分优秀!