我正在尝试使用arToolKit中的arDetectMarker函数来检测图像中的标记。我通过以下方式从磁盘读取图像:
cv::Mat image;
cv::Mat temp;
image = cv::imread(path, CV_LOAD_IMAGE_COLOR);
cv::cvtColor(image, temp, CV_RGB2BGR);
并使用以下方法转换为ARUint8 *格式:
dataPtr = (ARUint8 *) ((IplImage) temp).imageData;
我确信数据已正确转换为dataPtr,因为我保存了要检查的图像。不幸的是,当我调用arDetectMarker时,会发生“分段错误”,我不知道原因(我认为这是由于像素格式)。我在文档中读到了:
http://artoolkit.sourceforge.net/apidoc/ar_8h.html#b2868d9587c68fb7255d4f270bcf878f
它说格式通常是ABGR。但我正在使用Ubuntu 14.04,我认为我有v4l驱动程序,虽然我不确定,因为我不使用视频。我试图转换加载到ABGR或BGRA的图像,但我不确定我是否正确,或者这是否真的是一个要求。
另外,我之前做过校准程序。
任何人都可以帮助我吗?
谢谢!
马塞洛。