最近,google tango mira的最新更新为我们提供了一个有趣的边缘检测功能,即支持库,即TangoSupport_findEdgesNearPoint。 从参考文献中的描述:
TangoErrorType TangoSupport_findEdgesNearPoint(
const TangoXYZij *point_cloud,
const TangoImageBuffer *image_buffer,
const TangoCameraIntrinsics *camera_intrinsics,
const float uv_coordinates,
TangoSupportEdge **edges,
int *number_of_edges
)
我假设TangoSupportEdge ** edge和int * number_of_edges提供两个输出,其余为输入。我使用支持lib中提供的管理器来更新point_cloud和image_buffer,并检查它是否正常工作。 camera_intrinsics也正确初始化。之后,我声明并初始化输出(尝试了不同的大小):
TangoSupportEdge** tangoEdgeArray_;
int tangoEdgeArraySize_;
tangoEdgeArraySize_ = 1;
tangoEdgeArray_ = new TangoSupportEdge* [1];
然后,我调用了函数:
int ret = TangoSupport_findEdgesNearPoint(front_cloud_, image_buffer_,
&color_camera_intrinsics_, uvCoordTemp,
tangoEdgeArray_, &tangoEdgeArraySize_);
在onTouchDown上,我更新了uvCoordTemp并调用了这个TangoSupport_findEdgesNearPoint。每当我触摸屏幕并试图找到一些边缘时,它就会抛出这个错误并崩溃。如果没有访问源代码,我很困惑是什么导致了这个opencv断言失败。
E/cv::error(): OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat(const cv::Mat&, const Rect&), file /home/ubuntu/jobs/redwood_internal/RedwoodInternal/Redwood/3rdparty/opencv/modules/core/src/matrix.cpp, line 323
Fatal signal 6 (SIGABRT) at 0x000049d2 (code=-6), thread 18928 (GLThread 1092)
如果有人正在玩边缘检测功能,我很乐意在探索自己时与您讨论。