从opencv </point2f>中的vector <point2f>获取奇怪的坐标值

时间:2014-02-04 22:54:35

标签: opencv

我使用vector<Point2f>connersFrame1提取了100个图像的特征点,但在尝试访问该图像的像素值时(480 * 640),我遇到了分段错误。

然后我尝试使用

查看坐标值
cout<<"\n cornersFrame1[82]:  ("<<cornersFrame1[82].y<<" , "<<cornersFrame1[82].x<<")\n \n"; 

我得到了以下输出:

cornerFrame1 [83] :( -1.68725,317.552)

如何以float格式获取坐标值?

顺便说一句,我正在尝试以下代码来访问像素值:

for(int i=0; i<cornersFrame1.size(); i++)
    {
        float value = calculatedU.at<float>(cornersFrame1[i]);

    }

1 个答案:

答案 0 :(得分:1)

我不会对通常从特征检测器获取浮点值感到惊讶。请记住,探测器可能是深入图像知识的复杂工具(是的,字面上 - 例如BRISK,它使用缩放的模式构思来找到关键点)。在这种情况下,您可以将返回的浮点数四舍五入以获得整数。

但奇怪的是opencv可以返回负点坐标值。我认为这不是适当的opencv行为。但是,这个小值(-1.68)仍然可以接受,因为它通常具有一些半径(或补片),它们在这些半径上运行。但仍然opencv应该检查边界,似乎它没有。