我使用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]);
}
答案 0 :(得分:1)
我不会对通常从特征检测器获取浮点值感到惊讶。请记住,探测器可能是深入图像知识的复杂工具(是的,字面上 - 例如BRISK,它使用缩放的模式构思来找到关键点)。在这种情况下,您可以将返回的浮点数四舍五入以获得整数。
但奇怪的是opencv可以返回负点坐标值。我认为这不是适当的opencv行为。但是,这个小值(-1.68)仍然可以接受,因为它通常具有一些半径(或补片),它们在这些半径上运行。但仍然opencv应该检查边界,似乎它没有。